.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-09 11:48:06

.NET framework 与CLR的相关文章

C#、.NET Framework、CLR的关系

C#..NET Framework.CLR的关系 很多人没有将C#..NET Framework(.NET框架).CLR(Common Language Runtime,公共语言运行库)这三者之间的关系区分清楚,认为其版本号是一一对应的.其实不然,.NET框架是一个独立发布的软件包,其包含了CLR.类库以及相关的语言编辑器等工具.C#代码经过编译之后在CLR环境中运行.由于.NET框架3.0/3.5其实是.NET2.0的扩展(只是增加了一些新的程序集),所以.NET3.0/3.5的CLR版本还是

.NET Framework的CLR提供了三种方法来完成对共享资源

.NET Framework的CLR提供了三种方法来完成对共享资源 ,诸如全局变量域,特定的代码段,静态的和实例化的方法和域. (1) 代码域同步:使用MonITor类可以同步静态/实例化的方法的全部代码或者部分代码段.不支持静态域的同步.在实例化的方法中,this指针用于同步:而在静态的方法中,类用于同步,这在后面会讲到. (2) 手工同步:使用不同的同步类(诸如WaitHandle, Mutex, ReaderWrITerLock, ManualResetEvent, AutoResetEv

Hello World基于.net framework中CLR的执行

1 static void Main(string[] args) 2 { 3 Console.WriteLine("Hello,World!"); 4 Console.WriteLine("Hello,World!"); 5 } 一个很简单的Hello World程序在.net framework平台究竟是如何在计算机上运行的呢? 下面我将简单解答一下这个问题: 首先介绍CLR(公共语言运行时),CLR是一个可有多种编程语言使用的"运行时",C

查看本地安装的 .NET Framework(CLR) 版本

方法一:%SystemRoot%\Microsoft.NET\Framework 要了解安装了哪些版本的 .NET Framework,可以通过检查下面目录的子目录解决: %SystemRoot%\Microsoft.NET\Framework %SystemRoot%\Microsoft.NET\Framework64 (%SystemRoot%即目录C:\Windows) 也可以在命令行中输入下面命令,筛选出我们关注的结果: %SystemRoot%\Microsoft.NET\Framew

.NET Framework的CLR讲解

什么是CLR CLR常用简写词语,CLR是公共语言运行库(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离.CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时. 基本信息 CLR是一个可由多种编程语言使用的运行环境.CLR的核心功能包括:内存管理.程序集加载.安全性.异常处理和线程同步,可由面向CLR的所有语言使用.并保证应用和底层操作系统之间必要的分离.CLR是.NE

.net平台 .net Framework 组织结构 .net Framework类库 CLR C# 介绍

一..net平台 .NET现在可以看成微软的一个品牌,微软有两个非常成功的品牌,那就是Windows和Office. .NET会成为微软的另一个品牌.它不仅仅是一组技术,产品,或服务(微软的服务包括MSN, Passport, MSDN订阅,等等)一个品牌具有一些特征,如Rolex是一个手表品牌,它代表了高质量,时尚,昂贵,成功,等等. 二..net Framework组织结构 主要包括三部分:1.公共语言规范 2..NET Framework类库 3.公共语言运行库CLR(托管和执行代码) 三

浅谈.NET Framework 与CLR

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

.NET Framework CLR 版本检测

我写了一个 C# 程序来检测 .NET Framework CLR 版本. 在 Ubuntu 操作系统中的运行结果: [email protected]:~/work$ ./ClrInfo.exe OS Version: Unix 2.6.31.16 CLR Version: 2.0.50727.1433 ( Mono 2.4.2.3 ) Default Encoding: System.Text.UTF8Encoding Available Frameworks: Mono 1.0 Profi

[转].NET Framework、C#、CLR和Visual Studo之间的版本关系

原文地址:http://www.xcode.me/more/microsoft-net-framework-version-define C#版本 .NET Framework版本 CLR版本 VisualStudio版本 C#1.0 .NET Framework 1.0 CLR1.0 Visual Studio 2002 C#1.2 .NET Framework 1.1 CLR1.1 Visual Studio 2003 C#2.0 .NET Framework 2.0 CLR2.0 Visu