【问题标题】:Compiling with Visual Studio 2012 tools through Visual Studio 2015通过 Visual Studio 2015 使用 Visual Studio 2012 工具进行编译
【发布时间】:2015-12-13 17:49:28
【问题描述】:

我有很多开发人员目前使用 Visual Studio 2012,我想分两个阶段将他们升级到 2015。首先升级到 Visual Studio 2015,然后升级到新的 MSBuild(编译器)工具集。这很重要,因为我希望 Visual Studio 中的构建使用与构建脚本中的构建相同的工具集,这些工具集可在开发人员机器上使用并由构建服务器使用。我想避免选择一天并告诉每个开发人员安装 Visual Studio 2015,同时将变更集推送到我们的存储库/分支以一次更新构建脚本。

据我了解,项目文件中Project element 的ToolsVersion attribute 驱动了MSBuild 版本之间的区别。但是,在 Visual Studio 2015 中使用 ToolsVersion=4.0 构建项目时,我收到以下消息:

使用“14.0”版工具构建。
项目文件包含 工具版本=“4.0”。该工具集可能未知或缺失,其中 如果您可以通过安装适当的 MSBuild 的版本,或者构建可能已被强制到特定的 ToolsVersion 出于政策原因。像对待项目一样对待项目 工具版本="14.0"。欲了解更多信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=293424.

除此之外,我可以跟踪构建输出,看到它实际上是使用 Visual Studio 2015 工具集来编译代码。我知道“4.0”工具集没有丢失(我安装了 Visual Studio 2012,以及包含该版本的 MSBuild 的 .NET Framework 版本),所以我假设 Visual Studio 2015 找不到它,或者那里是我不明白的“政策原因”。

根据Standard and Custom Toolset Configurations 的 MSDN 页面,MSBuild 12.0 (Visual Studio 2013) 包括 4.0 工具集。但是我找不到有关 MSBuild 14.0 (Visual Studio 2015) 的任何信息。

是否可以在 Visual Studio 2015 中构建,但使用 Visual Studio 2012 工具集?如果是这样,怎么做?构建警告中提到的“政策原因”是什么?

【问题讨论】:

    标签: visual-studio-2012 msbuild visual-studio-2015


    【解决方案1】:

    解决方案

    让您的开发人员将环境变量 MSBUILDDEFAULTTOOLSVERSION 设置为 4.0。一种简单的方法是让它们运行打开提升的 PowerShell 提示符并运行:

    [Environment]::SetEnvironmentVariable("MSBUILDDEFAULTTOOLSVERSION", "4.0", "Machine")
    

    Visual Studio 需要重新打开才能接受此更改。准备好升级到新的 MSBuild 工具集后,让您的开发人员删除该环境变量:

    [Environment]::SetEnvironmentVariable("MSBUILDDEFAULTTOOLSVERSION", "4.0", "Machine")
    

    背景

    来自MSDN(强调我的):

    从 Visual Studio 2013 开始,MSBuild 工具集版本是 与 Visual Studio 版本号相同。 MSBuild 默认为这个 Visual Studio 中和命令行中的工具集,不管 项目文件中指定的工具集版本。这种行为可以 使用 /ToolsVersion 标志覆盖。有关详细信息,请参阅 Overriding ToolsVersion Settings.

    顺便说一句,要验证机器上可用的 MSBuild 工具集以及它们所在的位置,您只需打开 PowerShell 并运行:

    dir HKLM:\Software\Microsoft\MSBuild\ToolsVersions
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多