【发布时间】:2016-06-28 11:45:03
【问题描述】:
注意:这与众所周知VS2010/VS2012问题有关,在某些情况下,使用MSBuild构建C++/CLI时必须指定/p:VisualStudioVersion=11.0应用程序。
问题:使用引用 C++/CLI 项目文件的 MSBuild 任务构建我的 VS2012 C++/CLI 应用程序时,我需要将 /p:VisualStudioVersion=11.0 添加到 MSBuild 命令行,否则我会收到此错误:
error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.
只有在安装了 VS2010 和 VS2012 的机器上构建时才会出现这种情况,甚至是从 Developer Command Prompt for VS2012 或在我自己调用 %VS110COMNTOOLS%\vsvars32.bat 之后。
显然我已经知道解决方法,但我想摆脱始终指定相同的附加命令行参数的要求。
一些细节:我有一个 .proj 文件,它设置了用于构建 C++/CLI 应用程序的 MSBuild 任务。这是它的核心(我们称之为Foo.proj):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<CxxProjects
Include="$(MSBuildThisFileDirectory)src\**\*.vcxproj"
/>
</ItemGroup>
<Target Name="build">
<MSBuild Projects="@(CxxProjects)
Properties="VisualStudioVersion=11.0"/>
</Target>
</Project>
以上内容并不完整,仅作说明之用。问题是如上所述为 MSBuild 任务设置属性 VisualStudioVersion 没有帮助。我仍然得到相同的 MSB8008 错误。除非...是的,使用MSBuild Foo.proj /p:VisualStudioVersion=11.0。
是否有可能以某种方式解决这个问题 - 我在这里遗漏了什么?如果我只知道如何(我已经尝试过),我什至可以自己编辑单个 .vcxproj 文件。
【问题讨论】:
-
您知道吗:blogs.msdn.microsoft.com/webdev/2012/08/21/… 我建议您使用它链接到此处的 AdditionalProperties 技巧:sedodream.com/2009/04/29/…
-
我实际上阅读了那篇博文,但从未尝试过 AdditionalProperties。也许需要试一试。
-
@SimonMourier:将其发布为回复,我将奖励您。阅读我自己对该问题的回答以了解基本原理。
标签: visual-studio-2010 visual-studio-2012 msbuild c++-cli