the*_*nja 5 msbuild visual-studio-2012 visual-studio-2015
我有很多开发人员目前正在使用Visual Studio 2012,我想分两个阶段将它们升级到2015.首先升级到Visual Studio 2015,然后升级到新的MSBuild(编译器)工具集.这很重要,因为我希望在Visual Studio中构建使用相同的工具集作为构建脚本中的构建,这些构建脚本可在开发人员计算机上使用并由构建服务器使用.我想避免选择一天并告诉每个开发人员安装Visual Studio 2015,同时将更改集推送到我们的存储库/分支机构以一次更新构建脚本.
从我的理解中,ToolsVersion属性中的项目元素在项目文件驱动的MSBuild版本之间的区别.但是,在Visual Studio 2015中使用ToolsVersion = 4.0构建项目时,我收到以下消息:
使用工具版本"14.0"构建.
项目文件包含ToolsVersion ="4.0".此工具集可能未知或缺失,在这种情况下,您可以通过安装相应版本的MSBuild来解决此问题,或者出于策略原因,可能已将构建强制转换为特定的ToolsVersion.将项目视为具有ToolsVersion ="14.0".有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=293424.
除此之外,我可以按照构建输出看到它实际上是使用Visual Studio 2015工具集来编译代码.我知道"4.0"工具集不会丢失(我安装了Visual Studio 2012,以及包含该版本MSBuild的.NET Framework版本),所以我假设Visual Studio 2015无法找到它,或者那里是一个"政策原因",我不明白.
根据标准和自定义工具集配置的MSDN页面,MSBuild 12.0(Visual Studio 2013)包括4.0工具集.但是我在MSBuild 14.0(Visual Studio 2015)上找不到任何信息.
是否可以在Visual Studio 2015中构建,但使用Visual Studio 2012工具集?如果是这样,怎么样?构建警告中提到的"政策原因"是什么?
让您的开发人员将环境变量设置MSBUILDDEFAULTTOOLSVERSION
为4.0
. 执行此操作的一种简单方法是让他们运行,打开提升的 PowerShell 提示符并运行:
[Environment]::SetEnvironmentVariable("MSBUILDDEFAULTTOOLSVERSION", "4.0", "Machine")
Run Code Online (Sandbox Code Playgroud)
Visual Studio 需要重新打开才能接受此更改。一旦您准备好升级到新的 MSBuild 工具集,请让您的开发人员删除该环境变量:
[Environment]::SetEnvironmentVariable("MSBUILDDEFAULTTOOLSVERSION", "4.0", "Machine")
Run Code Online (Sandbox Code Playgroud)
来自MSDN(重点是我的):
从 Visual Studio 2013 开始,MSBuild 工具集版本与 Visual Studio 版本号相同。无论项目文件中指定的工具集版本如何 ,MSBuild 在 Visual Studio 中和命令行上默认使用此工具集。可以使用 /ToolsVersion 标志覆盖此行为。有关更多信息,请参阅 覆盖 ToolsVersion 设置。
顺便说一句,要验证计算机上有哪些 MSBuild 工具集以及它们所在的位置,您只需打开 PowerShell 并运行:
dir HKLM:\Software\Microsoft\MSBuild\ToolsVersions
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3055 次 |
最近记录: |