【问题标题】:NuGet target framework vs. MSBuild versionNuGet 目标框架与 MSBuild 版本
【发布时间】:2013-08-05 23:39:44
【问题描述】:

我正在构建一个 NuGet 包,它使用 NuGet 2.5 中的新功能自动更新项目文件以包含 *.props*.targets 文件以添加对自定义构建步骤的支持。目前这些文件包含在 NuGet 包中,路径如下:

  • /build/net35:这些是使用 MSBuild 3.5(即 Visual Studio 2008)的项目的 .props.targets 文件,无论项目针对哪个目标框架。
  • /build/net40:这些是使用 MSBuild 4.0(即 Visual Studio 2010-2012)的项目的 .props.targets 文件,无论项目针对哪个目标框架。

不幸的是,NuGet 的行为似乎不像我预期的那样,/build/net35 文件夹正在用于使用面向 .NET 3.5 的 MSBuild 4.0 (Visual Studio 2012) 的项目。如何根据项目使用的 MSBuild 版本而不是目标框架是什么来重构包以分离我的构建自定义?

【问题讨论】:

    标签: msbuild nuget nuspec


    【解决方案1】:

    我通过将原来的Antlr4 包分成三个单独的包解决了这个问题:

    1. Antlr4.Runtime:此包包含每个受支持的目标框架的运行时库。
    2. Antlr4:此包仅包含 MSBuild 4.0 (Visual Studio 2010+) 的工具和构建配置。这取决于Antlr4.Runtime 包。构建文件放在/build,而不是原来的/build/net40
    3. Antlr4.VS2008:此包仅包含 MSBuild 3.5 (Visual Studio 2008) 的工具和构建配置。这取决于Antlr4.Runtime 包。构建文件放在/build,而不是原来的/build/net35

    分离这些包后,用户安装Antlr4Antlr4.VS2008(取决于他们使用的MSBuild 版本),NuGet 将正确安装所有内容。

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多