将 msbuild 任务作为 nuget 传送

Gil*_*lad 5 c# msbuild nuget

我需要你的帮助。

我正在开发一个 msbuild 任务,该任务对 msbuild 执行某些操作。

我希望我的用户能够下载并安装 nuget 包,安装包后,构建任务将成为构建过程的一部分。

我知道如何发布 nuget 包,并且知道如何将自定义目标文件与 nuget 一起包含,我不知道如何在 nuget 安装时将导入语句添加到 csproj 中:

有没有办法做到这一点,还是我要求太多?

谢谢!吉拉德

ziv*_*kan 6

这些文档不是最容易找到的地方,但这里有一个有关在包中包含 MSBuild props/targets 文件的文档的链接

基本上,您将文件放在包中的 location 中build\<tfm>\<package_id>.props。例如build\netstandard2.0\MyPackage.props。如果您希望构建目标包含在所有 TFM 中,则可以使用build\<package_id>.props,但如果您的包还包含其他资产,例如lib/contentFiles/,则“no-TFM”构建文件将导致“资产目标回退”失败,因此如果您的包只有net472库和build文件,项目定位netcoreapp3.0将只获取build资产,而不获取任何net472资产。如果您的build文件位于 TFM 文件夹中,则 NuGet 的资产目标回退将选择 和lib资产build。因此,我强烈鼓励大家始终使用 TFM 文件夹。

文档需要改进,但解释列表buildbuildTransitive的表格buildMultiTargeting。使用的项目packages.config仅使用build. 当项目直接引用包时,PackageReference仅使用usebuild和asset 的项目。当包被传递而不是直接拉入时,下面buildMultiTargeting的资源就会被选择。和buildTransitive之间的区别很复杂。如果您了解多目标 SDK 风格项目中“内部构建”和“外部构建”的概念,那就是区别(是内部构建),否则仅使用.buildbuildMultiTargetingbuildbuild

我应该更新文档以获取此信息。