由于我将项目升级为Visual Studio 2010项目格式,因此我的C++ / CLI项目面向.net Framework 4.0。
将框架版本从C#项目切换到另一个版本很容易,但是我不知道如何在C++ / CLI项目中执行此操作,我在项目属性页面中看不到该设置。
最佳答案
在“框架和引用”对话框中按F1时,将显示以下内容:
在转换后的项目中这并不是十分准确,您必须自己添加<TargetFrameworkVersion>
元素。将其放入标记为“Globals”的PropertyGroup中:
<PropertyGroup Label="Globals">
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<others...>
</PropertyGroup>
使用VS2012及更高版本时的情况有所不同,VS2012是在“常规”属性页面中获得了Platform Toolset设置的VS的第一版。然后,您必须选择“v90”以获取针对3.5的正确构建。但是它很笨拙,您必须在计算机上安装所有中间版本的VS才能使用该选择。
为什么需要安装VS2008本身需要一个解释。核心问题是C运行时库(msvcrt100.dll及更高版本)包含.NET代码以支持托管代码执行。关键的细节是模块初始化程序,它确保在使用C++ / CLI代码的程序中正确初始化CRT。该代码始终以.NET 4为目标,并且由于将其硬烘焙到msvcrt100.dll(及更高版本)中,因此您始终对v4.0.30319运行时有严格的依赖。当您使用旧的C运行时msvcrt90.dll时,您只能具有纯v2.0.50727依赖性。使用VS2008的编译器的#include文件时,只能确保您具有msvcrt90.dll依赖性。
很难的事实是,很快就要迁移到.NET 4了,否则,您将遇到这样的构建问题。实际的障碍很少,.NET 4可以免费在您想象的所有目标上免费使用。克服与升级到更高的运行时版本相关的FUD通常只是真正的问题。没有理由害怕和怀疑,它是稳定的。