【问题标题】:Shipping msbuild task as nuget将 msbuild 任务作为 nuget 发送
【发布时间】:2020-01-02 09:38:19
【问题描述】:

我需要你的帮助。

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

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

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

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

谢谢! 吉拉德

【问题讨论】:

    标签: c# msbuild nuget


    【解决方案1】:

    文档不是最容易找到的地方,而是here's a link to the docs on including MSBuild props/targets files in your package

    基本上,您将文件放在包中build\<tfm>\<package_id>.props 的位置。例如build\netstandard2.0\MyPackage.props。如果您希望构建目标包含在所有 TFM 中,您可以使用 build\<package_id>.props,但如果您的包还包含其他资产,例如 lib/contentFiles/,“no-TFM”构建文件将导致“asset- target fallback" 失败,所以如果你的包只有net472 libs 和build 文件,一个以netcoreapp3.0 为目标的项目将只获得build 资产,没有net472 资产。如果您的 build 文件位于 TFM 文件夹中,则 NuGet 的资产目标回退将同时选择 libbuild 资产。因此,我强烈建议大家始终使用 TFM 文件夹。

    文档需要改进,但the table explaining 列出了buildbuildTransitivebuildMultiTargeting。使用packages.config 的项目仅使用build 下的构建资产。使用PackageReference 的项目仅在项目直接引用包时才使用buildbuildMultiTargeting 资产。 buildTransitive 下的资产在包被传递时被选中,而不是直接被选中。 buildbuildMultiTargeting 之间的区别很复杂。如果你了解多目标 SDK 风格项目中的“inner-build”和“outer-build”的概念,这就是区别(build 是 inner-build),否则只能使用build

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 2013-02-14
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多