承载公共语言运行时 (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 上运行

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

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

    什么是基元类型? 初学者可能很少听说过这个名词,但是平时用得最多的肯定是基元类型.先看下面两行代码: System.Int32 a = ; ;  上面两行代码都表示声明一个int类型的变量,但在平时写 ...

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

    如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...

  3. [转]浅谈 .NET Framework 与 .NET Core 的区别与联系

    本文转自:http://www.cnblogs.com/huchaoheng/p/6295688.html 2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NET Framework 与 .NET ...

  4. 浅谈 .NET Framework 与 .NET Core 的区别与联系

    2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NET Framework 与 .NET Core  这两个概念 .当今 net 生态系统如下: 从上面图中我们可以看到.net  主要分为三个部分 ...

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

    1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...

  6. 浅谈对Spring Framework的认识

    Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...

  7. 浅谈线程池(上):线程池的作用及CLR线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-1-the-goal-and-the-clr-thread-pool.html 线程池是一个重要的概念. ...

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

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  9. 【.Net基础二】浅谈引用类型、值类型和装箱、拆箱

    目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 引 ...

随机推荐

  1. 【Java杂货铺】用Security做权限极简入门

    原来大多数单体项目都是用的shiro,随着分布式的逐渐普及以及与Spring的天生自然的结合.Spring Security安全框架越受大家的青睐.本文会教你用SpringSecurity设计单项目的 ...

  2. 大言不惭 swank? talk about sth or speak too confidently

    cán,意思是指说大话而毫不感到难为情.出自<论语·宪问>:“子曰:‘其言之不怍,则为之也难.’”宋·朱熹注:“大言不惭,则无必为之志,而不自度其能否也.欲践其言,其不难哉!” 是不是类似 ...

  3. 有关于i++,i=i++等符号的笔记

    最近在看一些基础知识,发现自己以前忽略掉了很多东西,而这些东西恰恰是面试笔试中最常考到的 1.i=i+1 这个是最简单,最明了的一个表达式 2.有关于i++和++i的区别 i++和++i都是代表i=i ...

  4. android打飞机游戏、MVP句子迷App、悬浮窗、RxJava+Retrofit、加载动画、定制计划App等源码

    Android精选源码 微信打飞机 android进度设置加载效果源码 Android新手引导库EasyGuide MVP-好看又好用的句子迷客户端 XFloatView 一个简易的悬浮窗实现方案 a ...

  5. mysql 子查询不支持limit

    mysql执行如下语句 : SELECT * FROM `xxx_base_info` where yn =1 and xxx_keeper_id in (SELECT id FROM `user`w ...

  6. Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩

    Listening-lecture: Major topic: SP1---detail---detail---detail SP2---detail---detail---detail Crash ...

  7. 让java不再难懂

    废话不都说,直接上图哈 java基础思维导图整理.png 1.Java 简介.png 2.java主要特性.png 3.java发展历史.png 4.java 开发环境配置.png 5.java 基础 ...

  8. EXAM-2018-8-10

    EXAM-2018-8-10 F 突然卡了一会的水题 M 这题有点坑 考虑到一个数列的第一个数肯定会有 我们可以贪心的认为最优的方案是一个数列的第一个与另一个数列所有数的和.但是很容易找到反例 1 2 ...

  9. 项目部署篇之三——安装tomcat7.0

    1.下载tomcat 百度云下载 链接:https://pan.baidu.com/s/1UGPYHmR-1ehQRvdKGhSlyQ 提取码:3c0g 直接通过指令下载 wget http://mi ...

  10. verilog乘法器的设计

    在verilog编程中,常数与寄存器变量的乘法综合出来的电路不同于寄存器变量乘以寄存器变量的综合电路.知乎里的解释非常好https://www.zhihu.com/question/45554104, ...