使用vs2010将C ++ / CLI项目更改为另一个不是4.0的框架

由于我将项目升级到Visual Studio 2010项目格式,因此我的C ++ / CLI项目针对.net framework 4.0。

将框架版本从C#项目切换到另一个版本非常容易,但我不知道如何在C ++ / CLI项目中执行此操作,但在项目属性页面中没有看到此设置。


当你在框架和引用对话框中按下F1时,它会显示出来:

对于新项目,默认情况下,目标框架设置为.NET Framework 4. IDE不支持修改目标框架,但可以手动更改。 在项目文件(.vcxproj)中,默认的目标框架由v4.0属性元素表示。 要更改目标框架,请卸载项目,使用文本编辑器打开项目文件,然后将属性元素的值从v4.0更改为安装在服务器上的另一个版本。 例如,如果您指定代表.NET Framework v3.5的v3.5,则必须安装Visual Studio 2008 SP1 。 保存并关闭文件,重新加载项目,并确认目标框架显示在属性页中。*

对于已转换的项目来说这不是非常准确,您必须自己添加<TargetFrameworkVersion>元素。 把它放在标有“Globals”的PropertyGroup中:

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

当您使用VS2012及以上时,故事是不同的,VS的第一个版本在General属性页面中获取了平台工具集设置。 然后你必须选择“v90”来获得一个适合3.5的适当构建。 然而,这是笨拙的,你必须在机器上安装VS的所有中间版本才能使用该选项。

为什么你需要安装VS2008需要自己解释。 核心问题是C运行时库(msvcrt100.dll及更高版本)包含.NET代码以支持托管代码执行。 关键的细节是一个模块初始化器,它确保CRT在使用C ++ / CLI代码的程序中正确初始化。 该代码总是以.NET 4为目标,并且由于它很难被纳入到msvcrt100.dll(和更高版本)中,所以您始终对v4.0.30319运行时具有坚如磐石的依赖性。 当您使用旧的C运行时msvcrt90.dll时,您只能拥有纯v2.0.50727依赖项。 只有在使用编译器的VS2008的#include文件时,才能确保您具有msvcrt90.dll依赖性。

很冷的事实,即很快转移到.NET 4是很有必要的,如果你不这样做,你会遇到这样的构建问题。 这方面的实际障碍很少,.NET 4可以在你想象的所有目标上免费获得。 克服与移动到更高运行时版本相关的FUD通常只是真正的问题。 没有恐惧和怀疑的理由,它是稳定的。


是的,即使是托管的C ++项目也可以更改目标:

更改C ++ / CLI的目标.NET Framework(VS 2010)要更改.NET Framework for C ++ / CLI项目的版本(VS 2010)

在解决方案资源管理器中右键单击项目并单击卸载项目在解决方案资源管理器中右键单击卸载的项目,然后选择编辑<projectname>.vcxproj在项目XML文件中找到节点<PropertyGroup Label="Globals">在该节点中找到节点<TargetFrameworkVersion> (如果找不到节点,则添加它)节点的内部文本定义了目标框架。 它可以是v2.0,v3.0,v3.5或v4.0保存vcxproj文件并关闭它在解决方案资源管理器中右键单击卸载的项目,然后单击重新加载项目示例<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

注意:这些步骤仅适用于Visual Studio 2010,因为它使用新格式的C ++项目文件。

MSDN上的源代码:如何更改目标.NET Framework


由匿名用户:

(由于我是一个新用户,无法对此进行编辑,所以无论谁看到这种情况都可以随意提交以下内容)将工具集更改为v100实际上会使VS2010瞄准.NET 4.0,尽管它仍然会显示为目标3.5项目属性。 VS2010应该对此发出警告,因为目前看起来虽然你可以使用v100工具集定位.NET 3.5,但是你不能。

链接地址: http://www.djcxy.com/p/57035.html

上一篇: Change C++/CLI project to another framework than 4.0 with vs2010

下一篇: memory leak when calling unmanaged code from managed code in Windows 7