13

当我从命令行使用 msbuild 构建 VS2010 时,我可以在不编辑 vcxproj 文件的情况下从命令行将平台工具集更改为 v90(即 Visual Studio 2008 工具链)吗?

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

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

4 回答 4

26

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

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

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

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

于 2013-12-02T05:06:59.543 回答
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

于 2012-07-18T18:33:20.193 回答
2

我在 MSDN 中找到了答案:

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

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

于 2012-07-19T07:56:14.240 回答
0

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

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

于 2012-07-18T15:19:59.807 回答