由于我将我的项目升级为visual studio 2010项目格式,我的C++/CLI项目的目标是.net框架4.0.

将框架版本从C#项目切换到另一个版本很容易,但我不知道如何在C++/CLI项目中做到这一点,我在项目属性页中看不到对此的设置.

推荐答案

在"框架和参照"对话框中按F1键时会显示:

默认情况下,对于新项目,目标框架设置为.NET框架4.IDE不支持修改目标框架,但可以手动更改.

这在转换后的项目中不是非常准确,您必须自己添加<TargetFrameworkVersion>元素.将其放入标记为"Globals"的PropertyGroup中:

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

当您使用VS2012及以上版本时,情况就不同了.VS2012及以上版本是VS的第一个版本,在常规属性页中获得了平台工具集设置.然后,您必须 Select "v90"以获得针对3.5的正确版本.然而,这是笨拙的,你必须有所有的中间版本的VS安装在机器上有 Select .

为什么需要安装VS2008,这本身就需要一个解释.核心问题是C运行时库(msvcrt100.dll及以上)包含.NET代码来支持托管代码执行.关键的细节是一个模块初始化器,它确保CRT在使用C++/CLI代码的程序中正确初始化.代码总是针对目标.NET 4,因为它是硬烘焙到msvcrt100中的.dll(以及更高版本)您对v4的依赖性一直很强.0.30319运行时.你只能拥有一个纯v2.使用旧的C运行时msvcrt90时的0.50727依赖关系.dll.你只能确保你有一个msvcrt90.使用VS2008编译器的#include文件时的dll依赖关系.

冷酷的事实是,很快就有必要迁移到.NET4,如果你不这样做,你会很难解决像这样的构建问题.这几乎没有什么实际的障碍,.NET4在你能想象到的所有目标上都是免费的.克服与迁移到更高运行时版本相关的FUD通常只是真正的问题.没有恐惧和怀疑的理由,它是稳定的.

.net相关问答推荐

从Couchbase删除_txn文档的推荐方法?""

.NET Blazor-使用子组件中的处理程序方法进行双向数据绑定

.NET 7.0中的UseHttpsRedirection和IIS生产部署

IIS 发布 ASP.NET Core 应用程序而不关闭 IIS 网站

Erlang 的让它崩溃的哲学 - 适用于其他地方吗?

类似于字典但没有值的 C# 数据 struct

判断 Windows 路径中是否存在可执行文件

图像 UriSource 和数据绑定

什么是表达式树,如何使用它们,为什么要使用它们?

调整小数精度,.net

将 BitmapImage 转换为 Bitmap,反之亦然

获取类型的默认构造函数的最有效方法

如何在 C# 中仅设置 DateTime 变量的时间部分

当程序员说针对接口而不是对象的代码时,他们是什么意思?

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

.NET 进程间通信的最佳 Select 是什么?

在不使用while循环的情况下找到最里面的异常?

是否可以判断对象是否已附加到实体框架中的数据上下文?

Windows 服务在哪个目录中运行?

App.config:用户与应用程序范围