0

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

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

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

4

1 回答 1

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.

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

于 2013-08-06T22:31:17.753 回答