cod*_*nix 153 .net c++-cli .net-4.0 visual-studio-2010 visual-studio
自从我将项目升级到visual studio 2010项目格式后,我的C++/CLI项目就针对.net framework 4.0.
很容易将框架版本从C#项目切换到另一个版本,但我不知道如何在C++/CLI项目中执行此操作,我在项目属性页面中没有看到此设置.
Han*_*ant 189
当您在"框架和参考"对话框中按F1时,会显示此信息:
默认情况下,对于新项目,目标框架设置为.NET Framework 4. 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>
Run Code Online (Sandbox Code Playgroud)
使用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通常只是真正的问题.没有理由感到恐惧和怀疑,这是稳定的.
Bri*_*ndy 18
是的,即使对于托管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++项目文件.
由匿名用户:
(编辑为我是新用户,无法回复此问题,任何人都认为可以随意提交以下内容)将工具集更改为v100实际上会导致VS2010以.NET 4.0为目标,即使它仍将显示为目标3.5项目属性.VS2010应该真的吐出一个警告,因为目前它看起来像你可以用v100工具集来定位.NET 3.5,你不能.
| 归档时间: |
|
| 查看次数: |
71564 次 |
| 最近记录: |