当我从命令行使用msbuild构建VS2010时,是否可以从命令行将平台工具集更改为v90(即Visual Studio 2008工具链),而无需编辑vcxproj文件?
我目前在我的构建脚本中使用以下命令行:
mysystemf("msbuild %s.vcxproj /t:rebuild /p:configuration=release,platform=%s", prjname, platform);
答案 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项目