使用VS2010的msbuild进行构建时,是否可以从命令行设置平台工具集?

时间:2012-07-18 15:11:04

标签: c++ visual-studio-2010 command-line msbuild

当我从命令行使用msbuild构建VS2010时,是否可以从命令行将平台工具集更改为v90(即Visual Studio 2008工具链),而无需编辑vcxproj文件?

我目前在我的构建脚本中使用以下命令行:

mysystemf("msbuild %s.vcxproj /t:rebuild /p:configuration=release,platform=%s", prjname, platform);

4 个答案:

答案 0 :(得分:18)

是的,您可以在不更改vcxproj文件的情况下设置PlatformToolset。

如果您打开vcxproj文件,您会看到有PlatformToolset属性。 对于visual studio 2012,它是v110;对于VS2010,它是v100;对于VS2008,它是v90。

您可以使用/p:PlatformToolset=v110/v100/v90覆盖此属性以更改工具链。

注意:有时,msbuild因错误Unsupported platformtoolset value而失败,主要是因为您没有指定VisualStudioVersion

答案 1 :(得分:3)

PlatformToolset被配置为配置的PropertyGroup的一部分。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  <ConfigurationType>Application</ConfigurationType>
  <UseDebugLibraries>true</UseDebugLibraries>
  <CharacterSet>Unicode</CharacterSet>
  <PlatformToolset>v90</PlatformToolset>
</PropertyGroup>

如果要从命令行更改工具集,则应为每个工具集添加一个配置(使用IDE轻松完成),然后为构建调用该配置。

msbuild%s.vcxproj / t:rebuild / p:configuration = VC90Release ,platform =%s

答案 2 :(得分:1)

我找到了答案in MSDN

  

要使用Visual C ++ 9.0工具集重建项目,请键入其中一个   以下命令:

     

msbuild myproject.vcxproj / p:PlatformToolset = v90 / t:rebuild

答案 3 :(得分:0)

从这里http://msdn.microsoft.com/en-us/library/bb397428

它说添加/ToolsVersion:3.5将构建它就好像它是一个VS 2008项目