我正在构建一个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版本来分离我的构建自定义,而不是根据目标框架是什么?
答案 0 :(得分:0)
我通过将原始Antlr4
包分成三个独立的包来解决这个问题:
Antlr4.Runtime
:此包包含每个受支持的目标框架的运行时库。Antlr4
:此程序包仅包含MSBuild 4.0(Visual Studio 2010+)的工具和构建配置。这取决于Antlr4.Runtime
包。构建文件放在/build
而不是原始/build/net40
。Antlr4.VS2008
:此程序包仅包含MSBuild 3.5(Visual Studio 2008)的工具和构建配置。这取决于Antlr4.Runtime
包。构建文件放在/build
而不是原始/build/net35
。将这些包分开后,用户可以安装Antlr4
或Antlr4.VS2008
(取决于他们使用的MSBuild版本),NuGet会正确安装所有内容。