使用vs2010将C ++ / CLI项目更改为4.0以外的其他框架


153

由于我将项目升级为Visual Studio 2010项目格式,因此我的C ++ / CLI项目面向.net Framework 4.0。

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

Answers:


190

在“框架和引用”对话框中按F1时,将显示以下内容:

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

在转换后的项目中这并不是十分准确,您必须<TargetFrameworkVersion>自己添加元素。将其放入标记为“ Globals”的PropertyGroup中:

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

使用VS2012及更高版本时的情况有所不同,VS2012是在“常规”属性页面中获得“平台工具集”设置的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通常只是真正的问题。没有理由害怕和怀疑,它是稳定的。


8
我现在执行了这些步骤,但是现在出现错误“ MSB8009:.NET Framework 2.0 / 3.0 / 3.5针对v90平台工具集。请确保在计算机上安装了Visual Studio 2008”。我没有VS2008。
codymanix 2010年

8
引用我的回答:“必须安装Visual Studio 2008 SP1”。 您缺少必需的构建工具。
汉斯·帕桑

2
可能您还需要删除.suo文件并重新打开解决方案。就像我的情况一样。
alehro 2011年

通过安装Visual Studio 2008 Express(免费),我就可以正常工作。当我将平台工具集更改为v90时,我实际上遇到了很多错误。回到v100修复了所有问题!
simon.d 2011年

4
使用Visual Studio 2010创建使用混合C ++ / CLI和C#项目的.NET Framework 4.0程序时,安装.NET Framework 4.5(或.NET Framework 4.5附带的Visual Studio 2013)会导致在C ++ / CLI项目中VS 2010是基于4.5而不是以前的4.0构建的。当您在引用C ++ / CLI项目的相同解决方案中有针对4.0构建的C#项目时,此操作将中断。在C ++ / CLI-projects的vcxproj文件中插入<TargetFrameworkVersion> v4.0 </ TargetFrameworkVersion>可解决此问题。\ o /
Daniel Albuschat

18

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

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

在解决方案资源管理器中右键单击项目,然后单击“卸载项目”。在解决方案资源管理器中右键单击卸载的项目,然后选择“编辑”。 <projectname>.vcxproj在项目XML文件中找到节点<PropertyGroup Label="Globals">在该节点中找到节点<TargetFrameworkVersion>(如果找不到该节点,则将其添加)。目标框架。它可以是v2.0,v3.0,v3.5或v4.0保存vcxproj文件并关闭它,然后在Solution Explorer中右键单击已卸载的项目,然后单击Reload Project Example。 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

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

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


5

由匿名用户:

(以我是新用户的身份进行编辑,因此无法响应,任何人都可以随意提交以下内容)将工具集更改为v100实际上会导致VS2010以.NET 4.0为目标,即使该工具集仍会在目标网站中显示为3.5。项目属性。VS2010应该对此发出真正的警告,因为尽管您可以使用v100工具集来定位.NET 3.5,但目前看来还是一样。


这是因为多目标仅允许您将V2.0、3.0、3.5和4.0定位为目标。在1.x版的.NET无法定位这样
吉荣Landheer

0

在VS 2010中,如果安装了工具集,请转到项目属性->配置属性->常规,然后将平台工具集从v90更改为v100。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.