如何使用MSBuild定位v110平台工具集?

时间:2012-04-23 12:53:44

标签: visual-c++ msbuild visual-studio-2012

我正在开发一个命令行应用程序,它创建一个由单个VC ++项目组成的完整Visual Studio 11解决方案,并尝试使用MSBuild编译它。

我面临的问题很奇怪。

如果我在Visual Studio 11中执行我的命令行程序,它可以工作;如果我在开发环境之外启动它,它会抛出错误:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5): error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected. [f:\ABC.vcxproj]

我使用的命令如下:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe f:\snake\W9A30040.vcxproj /property:PlatformToolset=v110;Configuration=Debug /v:quiet

但我觉得PlatformToolset = v110被忽略,MSBuild使用v100(Visual Studio 2010)。

您对如何告诉MSBuild编译v110 Platform Toolset有什么建议吗?

6 个答案:

答案 0 :(得分:25)

我在VS 2012的完整版本中遇到了同样的问题。您还可以将VisualStudioVersion设置为MSBuild的属性,而不是处理接受的答案中提到的环境变量。例如:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\myproject.vcxproj /p:VisualStudioVersion=11.0

环境变量方法我肯定也一样,我老实说没有尝试过,因为我试图远离修改环境变量。

答案 1 :(得分:12)

确保.SLN文件的顶部如下所示:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

双击解决方案文件时,# Visual Studio 2012控制加载Visual Studio的版本(并控制Windows资源管理器中显示的图标)。

但是,当您运行MSBuild时, 会查看Format Version 12.00部分。

困惑?

这很令人困惑,因为Visual Studio 2010是版本10.0而Visual Studio 2012是版本11.0(而不是12.0),并且使用版本12.0解决方案文件格式会导致MSBuild(隐式)将VisualStudioVersion设置为11.0。 / p>

答案 2 :(得分:9)

我找到了解决这个问题的方法;可能是Visual Studio 11 Beta的问题,将在官方发布之前解决。

无论如何,如果你感兴趣,只需在调用MSBuild.exe之前将环境变量“VisualStudioVersion”设置为“11.0”。

批处理文件

set VisualStudioVersion=11.0

或在VB.NET中

Environment.SetEnvironmentVariable("VisualStudioVersion", "11.0")

答案 3 :(得分:3)

从Visual Studio 2013开始,MSBuild现在是Visual Studio的一部分,正确的路径应该是$(MSBuildToolsPath)(“C:\ Program Files(x86)\ MSBuild \ 12.0 \ Bin”)。如果您使用.Net framework文件夹(“C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319”)中的msbuild.exe,它将无法区分vs2012和vs2013版本。

答案 4 :(得分:1)

使用基于菜单的选项执行此操作。从VC ++ 2010 Express: - 右键单击​​项目的主文件(而不是树顶部的解决方案本身)。 - 单击“常规”。 - 在对话框的右上方找到Platform Toolset,上半部分。 - 从v110更改为v100。 - 单击“确定”。

-----完成------

答案 5 :(得分:0)

Microsoft提供了一个批处理文件来设置所有EnvVar 您可以在“Microsoft Visual Studio 2012 / Visual Studio工具”下的“开始”菜单中或Visual Studio文件夹(“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Tools \ VsDevCmd.bat”)中找到它。 / p>