我正在构建一个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 回答
我通过将原始
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将正确安装所有内容 .