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