浅谈.NET Framework 与CLR

承载公共语言运行时 (CLR) 的所有应用程序均需启动(或称“激活”)CLR 以运行托管代码。             通常,.NET Framework 应用程序在生成它的 CLR 版本上运行,但您可以使用应用程序配置文件(有时称为 app.config 文件)来更改桌面应用程序的此行为。  但是,您不能使用应用程序配置文件来更改 Windows 应用商店应用或 Windows Phone 应用程序的默认激活行为。  本文说明如何使桌面应用程序能够在 .NET Framework 的其他版本上运行,并提供了如何定位版本 4 或 4.5 的示例。

按下列顺序确定在其上运行应用程序的 .NET Framework 的版本:

  • 配置文件。

    如果应用程序配置文件包括指定了一个或多个 .NET Framework 版本的 <supportedRuntime> 项,并且这些版本之一存在于用户的计算机上,则应用程序将在此版本上运行。                 配置文件按 <supportedRuntime> 项的列出顺序读取这些项,并使用存在于用户计算机上的所列的第一个 .NET Framework 版本。(对于 1.0 版,使用 <requiredRuntime> 元素。)

  • 编译的版本。

    如果不存在任何配置文件,但用户计算机上存在基于其构建应用程序的 .NET Framework 版本,则此应用程序将在此版本上运行。

  • 已安装的最新版本。

    如果应用程序基于其生成的 .NET Framework 版本不存在,并且配置文件未在 <supportedRuntime> 元素中指定版本,则应用程序将尝试在用户计算机上存在的 .NET Framework 的最新版本上运行。

    但是,.NET Framework 1.0、1.1、2.0、3.0 和 3.5 应用程序不会自动在 .NET Framework 4 或更高版本上运行,在某些情况下,用户可能会收到错误,且系统可能会提示用户安装 .NET Framework 3.5。                 由于不同版本的 Windows 系统包含的 .NET Framework 版本不同,因此激活行为还取决于用户的操作系统。  如果应用程序支持 .NET Framework 3.5 和 4 或更高版本,建议您在配置文件中使用多个条目来指明这一点,以避免 .NET Framework 初始化错误。  有关详细信息,请参阅 .NET Framework 版本和依赖关系

为了利用版本 4 和 4.5 中的性能改进,您可能还需要将您的 .NET Framework 3.5 应用程序配置为在 .NET Framework 版本 4 或 4.5 上运行,甚至在安装了 .NET Framework 3.5 的计算机上也是如此。

将应用程序配置为在 .NET Framework 4 或 4.5 上运行

  1. 添加或查找 .NET Framework 项目的配置文件。                 应用程序的配置文件与该应用程序位于相同的目录中,并且具有相同的名称,只不过它具有扩展名 .config。  例如,对于名为 MyExecutable.exe 的应用程序,应用程序配置文件的名称为 MyExecutable.exe.config。

    若要添加配置文件,请在 Visual Studio 的菜单栏中,依次选择“项目”和“添加新项”。                 从左侧窗格中选择“常规”,然后选择“配置文件”。将配置文件命名为 appName.exe.config。  这些菜单选项对于 Windows 应用商店应用或 Windows Phone 应用程序项目不可用,因为您无法在这些平台上更改激活策略。

  2. 将如下 <supportedRuntime> 元素添加到应用程序配置文件中:
    <configuration>
      <startup>
        <supportedRuntime version="<version>"/>
      </startup>
    </configuration>

    其中,<version> 指定与您的应用程序支持的 .NET Framework 版本匹配的 CLR 版本。  使用以下字符串:

    • .NET Framework 1.0:“v1.0.3705”
    • .NET Framework 1.1:“v1.1.4322”
    • .NET Framework 2.0、3.0 和 3.5:“v2.0.50727”
    • .NET Framework 4 和 4.5(包括 4.5.1 等单点发行版):“v4.0”

    可以添加多个 supportedRuntime 元素(按优先顺序列出)以指定对 .NET Framework 的多个版本的支持。

下表演示安装在计算机上的应用程序配置文件设置和 .NET Framework 版本如何确定在计算机上运行的 .NET Framework 3.5 应用程序的版本。             这些示例特定于 .NET Framework 3.5 应用程序,但您可以将类似逻辑用于使用早期版本的 .NET Framework 生成的目标应用程序。  请注意,.NET Framework 2.0 版本号 (v2.0.50727) 用于在应用程序配置文件中指定 .NET Framework 3.5。


App.config 文件设置


在安装了 3.5 版的计算机上


在安装了版本 3.5 和 4 或 4.5 的计算机上


在安装了版本 4 或 4.5 的计算机上



在 3.5 上运行


在 3.5 上运行


显示提示用户安装正确版本的错误消息*


<supportedRuntime version="v2.0.50727"/>


在 3.5 上运行


在 3.5 上运行


显示提示用户安装正确版本的错误消息*


<supportedRuntime version="v2.0.50727"/>                   <supportedRuntime version="v4.0"/>


在 3.5 上运行


在 3.5 上运行


在 4 或 4.5 上运行


<supportedRuntime version="v4.0"/>                   <supportedRuntime version="v2.0.50727"/>


在 3.5 上运行


在 4 或 4.5 上运行


在 4 或 4.5 上运行


<supportedRuntime version="v4.0"/>


显示提示用户安装正确版本的错误消息*


在 4 或 4.5 上运行


在 4 或 4.5 上运行

时间: 2024-10-03 22:37:12

浅谈.NET Framework 与CLR的相关文章

【深入.NET平台】浅谈.NET Framework基元类型

什么是基元类型? 初学者可能很少听说过这个名词,但是平时用得最多的肯定是基元类型.先看下面两行代码: System.Int32 a = 5; int a = 5;  上面两行代码都表示声明一个int类型的变量,但在平时写代码的时候我们一般用的是第二种方式.第二种方式不仅简洁.易读,而且生成的IL代码和第一种完全一致.像这种编译器直接支持的数据类型就称为基元类型.类似的还有double.bool.long.string等. 基元类型与.NET框架类库的关系 在我接触的第一份面试题中,我记得有这么一

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

浅谈Entity Framework 增删改查和事务操作

1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否可空) var user = new User { Name = "bomo", Age = 21, Gender = "male" }; db.User.Add(user); db.SaveChanges(); 2.删除对象,删除只需要对象的主键 DbEntity d

【转】【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

ASP.NET MVC系列文章 原文地址:https://www.cnblogs.com/wangjiming/p/6275854.html [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP.NET框架 [05]浅谈ASP.NET MVC运行过程 [06]浅谈ASP.NET MVC 控制器 [07]浅谈ASP.NET MVC 路由 [08]浅谈AS

浅谈算法和数据结构

: 一 栈和队列 http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html 最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因.另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的. 计算

浅谈IM软件业务知识——非对称加密,银行U盾的原理

概述 首先了解一下相关概念:RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行 因式分解却非常困难,因此可以把乘积公开作为公钥,该算法能够抵抗目前已知的所有密码攻击.RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个 加密,需要使用另外一个才能解密.我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器. RSA非对称加密算法,可以验

浅谈五大Python Web框架

http://www.csdn.net/article/2011-02-17/292058 导读:作者飞龙写了一篇<浅谈Python Web框架>,文中他介绍了几个Python Web框架和自己对选择框架的分析.在他看来,用Django来快速开发一些Web运用是很不错的选择.以下是文章内容: 说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: http://wik

浅谈深度学习中潜藏的稀疏表达

浅谈深度学习中潜藏的稀疏表达 “王杨卢骆当时体,轻薄为文哂未休. 尔曹身与名俱灭,不废江河万古流.” — 唐 杜甫<戏为六绝句>(其二) [不要为我为啥放这首在开头,千人千面千理解吧] 深度学习:概述和一孔之见 深度学习(DL),或说深度神经网络(DNN), 作为传统机器学习中神经网络(NN).感知机(perceptron)模型的扩展延伸,正掀起铺天盖地的热潮.DNN火箭般的研究速度,在短短数年内带来了能“读懂”照片内容的图像识别系统,能和人对话到毫无PS痕迹的语音助手,能击败围棋世界冠军.引

浅谈算法和数据结构(1):栈和队列

浅谈算法和数据结构(1):栈和队列 2014/11/03 ·  IT技术                                         · 2 评论                                      ·  数据结构, 栈, 算法, 队列 分享到: 60 SegmentFault D-Day 2015 北京:iOS 站 JDBC之“对岸的女孩走过来” CSS深入理解之relative HTML5+CSS3实现春节贺卡 原文出处: 寒江独钓   欢迎分享原创