【问题标题】:Compiling using MSBuild 12.0 from Microsoft Visual Studio 2015使用 Microsoft Visual Studio 2015 中的 MSBuild 12.0 进行编译
【发布时间】:2017-04-07 17:58:51
【问题描述】:

我有一个使用 MSVC 12.0 Visual Studio 2013(C++/CLI 和 C#)编译的解决方案,但只有 Visual Studio 2015(社区)。我想按预期使用 MSVC 12.0 构建项目,因为我只需要为我的目的重建解决方案的 1 部分(共 5 个)并希望它与其他 DLL 兼容。当尝试从 MSVC 14.0 (Visual Studio 2015) 构建它时,它说:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets(57,5): error MSB8020: The build tools for v120 (Platform Toolset = 'v120') cannot be found.

当然,我从这里安装了 2013 版的 MS Build 工具(MSVC 12.0,v120):https://www.microsoft.com/en-us/download/details.aspx?id=40760 以及 Microsoft Visual C++ Redistributable 2013 包。

安装 12.0 构建工具的正确目录是 C:\Program Files (x86)\MSBuild\12.0\Bin\amd64

这看起来像是解决方案(或通常在 Visual Studio 中)的配置错误,因为它在错误的目录中查找构建工具。有谁知道我需要在 Visual Studio 中更改/添加哪些设置才能使用 MSBuild 12.0 而不是 14.0 进行编译?我不想安装 Visual Studio 2013,因为我不将它用于其他任何用途(只是希望可以根据需要在 VS 2015 中使用 VS 2013 MSBUILD)。

【问题讨论】:

  • 不确定是谁投了反对票,这是一个之前在 SO 上没有回答过的问题。我只是想在没有安装 Visual Studio 2013 的情况下使用 Visual Studio 2015 构建一个 Visual Studio 2013 项目。我确信其他人在使用旧项目之前遇到过这个问题。如果那个人可以评论为什么投反对票,我可以澄清我的问题。
  • 您是否尝试使用命令提示符覆盖项目和解决方案的 ToolsVersion 设置:msbuild.exe someproj.proj /tv:12.0?
  • @Leo-MSFT 是的,但我确实尝试过,因为他们现在在幕后将 MSBuild 命令嵌入到 Visual Studio 中,它似乎不起作用。

标签: c++ visual-studio-2013 visual-studio-2015 msbuild c++-cli


【解决方案1】:

好的,我已经完成了这项工作,尽管是以一种迂回的方式。感谢其他回答和评论的人。免费注册 Microsoft Visual Studio Dev Essentials 订阅。 https://azure.microsoft.com/en-us/pricing/member-offers/vs-dev-essentials/ 然后您可以通过菜单并通过此链接下载 Visual Studio Community 2013 并找到它https://my.visualstudio.com/downloads。这样做之后,您可以从 Visual Studio 2015 构建 MSVC 12.0。当然,并不完美,但它可以工作。我还没有尝试卸载 Visual Studio 2013 以查看它是否仍然有效(Windows Phone SDK 8.1 与 2013 一起安装,如前所述以使其在 2015 的企业版中工作)但如果你能以某种方式保留它并删除 2013 版我相信它可以在没有安装 2013 的情况下工作......

【讨论】:

  • 很高兴知道您已经解决了您的问题。请标记您的答案,这对遇到相同问题的其他社区有好处。谢谢。
【解决方案2】:

如果您转到.vcxproj 的顶部,请将其更改为此

<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

那么您的.sln 仍然可以在 Visual Studio 2015 中打开

VisualStudioVersion = 14.0.25420.1

原因是编译器版本是逐个项目指定的,并且会覆盖解决方案版本。

【讨论】:

  • 这已经是vcsproj 项目中指定的内容。问题似乎是 Visual Studio 2015 看起来 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140` etc for the V12.0 build tools which are actually located here: C:\Program Files (x86)\MSBuild\12.0\Bin\amd64` - 正在寻找如何向 Visual Studio 发出信号,在哪里寻找 12.0 构建工具而不是14.0 路径。
  • 如果你去项目属性,General下面是什么>Platform Toolset?是否设置为Visual Studio 2013 (v120)
  • Visual Studio 2013 (v120) (not installed) - 我认为构建工具就足够了,也许更多的依赖项?
【解决方案3】:

我不想安装 Visual Studio 2013,因为我不将它用于其他任何用途(只是希望可以根据需要在 VS 2015 中使用 VS 2013 MSBUILD)。

您可以从 VS2015 安装程序安装 VS2013 工具集版本,而无需安装 Visual Studio 2013。从 2015 安装程序中,选择 Windows 8.1 and Windows Phone 8.0/8.1 Toolscommon Tools for Visual C++ 2015

安装完成后,你会发现平台工具集如下:

然后您可以使用平台工具集 Visual Studio 2013(v120) 构建您的项目。

您可以参考 SO 上的similar question 的更多信息。

【讨论】:

  • 感谢以上内容,我确实在其他地方看到了帖子,但应该提到我正在使用没有该选项的 VS Community(而 Enterprise 有)
  • 是的,你是对的。我没有注意到 VS Community 和 Enterprise 的不同之处。看来您需要安装Visual Studio 2013 或尝试使用Visual Studio Enterprise。
猜你喜欢
  • 2015-12-13
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多