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