当我使用命令行从VS2010中进行msbuild构建时,是否可以在命令行中将平台工具集更改为v90(即Visual Studio 2008工具链),而无需编辑vcxproj文件?
目前,在我的构建脚本中,我正在使用以下命令行:
mysystemf("msbuild %s.vcxproj /t:rebuild /p:configuration=release,platform=%s", prjname, platform);
当我使用命令行从VS2010中进行msbuild构建时,是否可以在命令行中将平台工具集更改为v90(即Visual Studio 2008工具链),而无需编辑vcxproj文件?
目前,在我的构建脚本中,我正在使用以下命令行:
mysystemf("msbuild %s.vcxproj /t:rebuild /p:configuration=release,platform=%s", prjname, platform);
是的,你可以在不改变vcxproj文件的情况下设置PlatformToolset。
如果你打开一个vcxproj文件,你会看到有一个PlatformToolset属性。对于Visual Studio 2012,它是v110;对于VS2010,它是v100;对于VS2008,它是v90。
你可以使用“/p:PlatformToolset=v110/v100/v90”来覆盖此属性以改变工具链。
注意:有时候,msbuild会出现错误“Unsupported platformtoolset value”,这往往是因为你没有指定“VisualStudioVersion”。
<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
我在MSDN上找到了答案:链接:
要使用Visual C++ 9.0工具集重新生成项目,请键入以下任一命令:
msbuild myproject.vcxproj /p:PlatformToolset=v90 /t:rebuild
从这里开始http://msdn.microsoft.com/en-us/library/bb397428
它说添加 /ToolsVersion:3.5 将构建它就像是一个 VS 2008 项目