如何使用 MSBuild 构建具有 VS2010 配置的 VS2015 解决方案?

Posted

技术标签:

【中文标题】如何使用 MSBuild 构建具有 VS2010 配置的 VS2015 解决方案?【英文标题】:How to build a VS2015 solution that has a VS2010 configuration using MSBuild? 【发布时间】:2016-08-28 18:01:13 【问题描述】:

我想使用 MSBuild 从命令行构建 Visual Studio 2015 C++ 解决方案。复杂之处在于我想构建解决方案的特定配置,它使用 Visual Studio 2010 工具集(因为我要链接到第 3 方库,所以这是必要的)。

我过去曾成功使用过 MSBuild,但不确定在这种情况下使用哪个版本的 MSBuild 和 vcvarsall.bat。目前我正在跑步:

"\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" "\Program Files (x86)\MSBuild\14.0\Bin\MSBuild" mysolution2015.sln /p:Configuration="2010_Config" /p:useenv=true

但这给出了错误:

链接:致命错误 LNK1117:选项“清单:嵌入”中的语法错误

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您应该使用 VS2015 中的 vcvarsall.bat ("\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat") 所选配置将选择适当的工具集(假设您同时安装了 VS2015 和 VS2010)。

然后您可以简单地使用 msbuild,因为它已被添加到路径中...

【讨论】:

我仍然对这个解决方案有疑问。我的 VS2015 解决方案的 VS2015 配置使用 msbuild 正确构建。但是使用 VS2010 工具的配置无法使用 msbuild 构建(它可以从 IDE 中构建)。使用 msbuild,错误包括:error C2039: 'gets': is not a member of 'std',这表明 VS2015 编译器正在运行,而不是 VS2010 编译器。

以上是关于如何使用 MSBuild 构建具有 VS2010 配置的 VS2015 解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VS 2015 MSBuild 构建 .vdproj

MSBuild Script 和 VS2010 发布应用 Web.config 转换

让 MSBuild 和 CruiseControl .NET 构建和部署 VS2010 数据库项目

使用 vc2010 和 msbuild 的多个构建规则

在 x86 中编译引用 C++/CLI DLL 的 C# 项目时,MSBuild 无法构建

VS2005 debug编译和msbuild编译 有啥区别