我创建了这个项目https://github.com/RemiBou/RemiBou.CosmosDB.Migration,要进行工作,它需要用户做两件事:创建适当的文件夹并编辑csproj,以便嵌入这些文件夹中的文件。
在使用install.ps1安装时,我们可以自动执行此操作,但是不建议使用此功能。你知道我该怎么做吗?
答案 0 :(得分:1)
install.ps1
并非完全不推荐使用,但这是packages.config
独有的功能。 PackageReference
没有安装的概念,因为任何人都可以简单地编辑csproj
并添加PackageReference。还原时,NuGet无法知道这是添加引用后第一次为项目还原软件包,还是这是第一次使用干净的存储库还原项目(在“ msbuild /例如“ t:clean”或“ git clone”。
我不知道用于创建文件夹的替代方法,除了拥有说明该约定是使用该文件夹名称的文档外。但是,修改csproj的另一种方法是利用MSBuild是通用的生成系统,并且NuGet软件包可以包含MSBuild props and targets file的事实。
在您的特定情况下,我将创建一个props文件,该文件定义一个类似<RemiBouCosmosDBMigrationPath>CosmosDB\Migrations\</RemiBouCosmosDBMigrationPath>
的属性,如果您的包用户使用该属性,则包用户可以将该属性更改为其他路径,从而覆盖csproj中的属性值喜欢。
然后创建一个目标文件,其中包含类似于
的目标<Target name="RemiBouCosmosDBMigrationsEmbedMigrations" BeforeTargets="???">
<ItemGroup>
<EmbeddedResource Include="$(RemiBouCosmosDBMigrationPath)**\*.js" />
</ItemGroup>
</Target>
您需要确定在BeforeTargets属性中输入的最佳目标名称,但是希望您能理解。 csproj
文件不过是具有某些约定的MSBuild文件。 MSBuild文件可以导入其他MSBuild文件,并且MSBuild和NuGet可以一起使用,以允许MSBuild导入来自已还原包的MSBuild文件。只需以不同的方式构成MSBuild属性和项目,最终结果仍可以相同。