VS 2012项目转换烦恼

Posted

技术标签:

【中文标题】VS 2012项目转换烦恼【英文标题】:VS 2012 project conversion troubles 【发布时间】:2013-07-31 09:20:44 【问题描述】:

我有一个 VS 2010 解决方案,其中包含 C++/CLI 和 C# 项目的完美组合。 我决定继续使用 VS 2012 进行进一步开发。由于一些技术困难,C++/CLI 项目无法升级。这给我带来了一些问题。我每晚构建脚本,使用 devenv 命令编译上述解决方案。所有 C++/CLI 项目都无法编译。

IDE 在触发时会立即要求转换所有项目。我说不,然后编译,一切正常。

我的调查:

我尝试了以下方法来了解实际发生的情况。 MSBUILD 日志的详细程度也有所增加。在所有情况下都使用了 VS 2012 命令提示符。

案例 1:

msbuild C++/CLI 项目名称 /t:rebuild

结果:

项目编译良好并使用 VS 2010 编译器。日志中的以下行显示:

创建“x64\Debug\Swift.Algorithms.unsuccessfulbuild”,因为 指定了“AlwaysCreate”。 ClCompile: C:\Program 文件 (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe

案例 2:

devenv C++/CLI 项目名称 /rebuild "CONFIGURATION"

结果:

项目编译良好并使用 VS 2010 编译器。日志中的以下行显示:

1>使用程序集“Microsoft.Build.CppTasks.x64”中的“CL”任务, 版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"。 1>任务“CL” 1>传递给工具的环境变量:1> VS_UNICODE_OUTPUT=1512 1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe

案例3:(让我沮丧的那个)

devenv 解决方案文件名 /rebuild "CONFIGURATION"

C++/CLI 项目无法编译。 C# 项目编译良好。本例中使用的 C++ 编译器是 VS 2012 版本。日志中的以下行显示:

1> 传递给工具的环境变量:1> VS_UNICODE_OUTPUT=1016 1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\x86_amd64\CL.exe /c

问题:

1) 我看到 MSBUILD 足够聪明,可以在单独使用项目文件进行编译时使用适当的工具。使用什么 VS 工具命令提示符(VS 2010 或 VS 2012)真的无关紧要。调用解决方案文件时出了什么问题?

2) 我看到编译我的产品的唯一方法是单独编译每个项目,因为解决方案文件会造成问题。这是已知的限制吗?

我将不胜感激有关此问题的任何意见。

【问题讨论】:

使用devenv 而非msbuild 有什么令人信服的理由吗?您是否正确设置了平台工具?即 VS2010 的 blogs.msdn.com/cfs-filesystemfile.ashx/__key/… 我在早期看到了一些问题,当我使用 devenv 代替 msbuild 时,我们产品的构建顺序不同。 msbuild 会使编译失败。之后没有进行太多调查,因为 devenv 工作正常。 如果我没记错的话,那可能是因为 VS2005 实际上没有基于 MSBuild 的项目 (????) 并且 MSBuild 会从非 MSBuild 项目中创建临时项目。 weblogs.asp.net/kdente/archive/2005/06/05/410432.aspx 我想这将是一个复杂的过程。因此,如果您使用的是 VS2008+,也许是时候再试一次 MSBuild 了? 我假设,尽管没有明确说明,但您的 C++/CLI 项目中的平台工具集设置为 VS2010? 我希望它指向 VS 2010 工具集。当我使用 msbuild 和 devenv 单独编译项目时,它就是这样做的。但是当我使用 devenv 编译解决方案文件时,虽然我没有将 C++/CLI 项目转换为 2012 版本,但正在使用 VS 2012 工具集。 【参考方案1】:

无论您是使用msbuild 还是devenv 构建(我个人更喜欢msbuild)我想至少每个Visual C++ 项目的Platform Toolset 应该设置为@987654326 @。

【讨论】:

以上是关于VS 2012项目转换烦恼的主要内容,如果未能解决你的问题,请参考以下文章

还在烦恼没有项目?手把手带你从 0 开始用 React 重写学成在线 II

一键解决Android项目图片压缩烦恼,为apk瘦身!

前端开发树形插件带来的烦恼

R中的因素:不仅仅是烦恼?

HihoCoder 1640 : 命名的烦恼(预处理)(好题)

直面焦虑烦恼 谈谈成长