VS 2012项目转换烦恼

时间:2013-07-31 09:20:44

标签: visual-studio-2010 visual-studio c++-cli

我有一个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 Files   (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”任务,   Version = 4.0.0.0,Culture = neutral,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 {解决方案文件名} /重建“{CONFIGURATION}”

C ++ / CLI项目无法编译。 C#项目编译正常。在这种情况下使用的C ++编译器是VS 2012版本。日志中的以下行显示:

  

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

问题:

1)我发现当项目文件被单独用于编译时,MSBUILD足够聪明,可以使用适当的工具。使用VS工具命令提示符(VS 2010或VS 2012)并不重要。调用解决方案文件时出了什么问题?

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

我很感激有关此事的任何意见。

1 个答案:

答案 0 :(得分:0)

无论您使用msbuild还是devenv进行构建(我个人更喜欢msbuild),我会想到,至少每个视觉的Platform Toolset C ++项目应设置为Visual Studio 2010

Platform Toolset