NuGet目标框架与MSBuild版本

时间:2013-08-05 23:39:45

标签: msbuild nuget nuspec

我正在构建一个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版本来分离我的构建自定义,而不是根据目标框架是什么?

1 个答案:

答案 0 :(得分:0)

我通过将原始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
  4. 将这些包分开后,用户可以安装Antlr4Antlr4.VS2008(取决于他们使用的MSBuild版本),NuGet会正确安装所有内容。