电脑单机游戏网

当前位置:龙8官网long8 > 电脑单机游戏网 > 程序到底运行在哪个

程序到底运行在哪个

来源:http://www.sketchydesignstudio.com 作者:龙8官网long8 时间:2019-12-13 04:03

正文转载  https://walterlv.github.io/dotnet/2017/09/22/dotnet-version.html ,多谢  吕毅 (富含链接: https://walterlv.github.io )

当大家编译程序目标框架选为 .Net Framework 4.5/4.6/4.7 时,CL奥迪Q3运营时是哪些剖断大家到底应当用哪一个 .Net Framework 呢?.Net Framework 的版本到底由什么部分组成?大家编写翻译 .Net Framework 时选取的版本决定了怎么?


让自家对这一个主题材料发出兴趣的因由是:

  • 本人将顺序编写翻译的目的框架选为 .Net Framework 4.7;在风姿罗曼蒂克台设置了 .Net Framework 4.6 的Computer上提示缺乏 .Net Framework 4.7;删除了随编写翻译一齐生成的 app.config 文件后前后相继能够经常运作。
  • 另一个程序,作者领会将次第编写翻译的对象框架选为 .Net Framework 4.5,但在大器晚成台未有安装其余附加 .Net Framework 的 Windows 7 的Computer上提示缺少的是 .Net Framework 4.0。

那边的疑云在于为什么以上三种相仿相像的意况,提醒的框架版本却昨今分歧。此中的 app.config 文件成为了考察此难点的突破口。

布署协助的周转时

观测程序附带的 app.config 文件,大家开掘支持的运行时版本是 v4.0,sku 版本是 4.7。

<configuration>  
   <startup>  
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />  
   </startup>  
</configuration>  

疑点:

  1. 干什么我们根据 .Net Framework 4.7 开采的程序运转时版本是 4.0?
  2. sku 是什么?

微软的官方文书档案给了小编们解答:supportedRuntime Element。

  • version:用于钦赐此应用程序帮助的公家语言运营时(CLTiggo)的本子。
  • sku:stock-keeping unit(官方汉语为“仓库储存单位”,但是依然不懂这几个词的乐趣),用于钦定此应用程序支持的 .Net Framework 发行版本。

version 的值可取:

.NET Framework 版本 version 值
忽略早期版本 忽略早期版本
2.0 “v2.0.50727”
3.0 “v2.0.50727”
3.5 “v2.0.50727”
3.5 “v2.0.50727”
4.0-4.7 “v4.0”

sku 的值可取:

.NET Framework version sku 值
4.0 “.NETFramework,Version=v4.0”
忽略中间版本 忽略中间版本
4.5 “.NETFramework,Version=v4.5”
4.5.1 “.NETFramework,Version=v4.5.1”
4.5.2 “.NETFramework,Version=v4.5.2”
4.6 “.NETFramework,Version=v4.6”
4.6.1 “.NETFramework,Version=v4.6.1”
4.6.2 “.NETFramework,Version=v4.6.2”
4.7 “.NETFramework,Version=v4.7”

于是我们发掘,其实无论是大家将先后的靶子框架选为 .Net Framework 的哪多个4.x 版本,CL中华V 运转时都以用 v4.0 表示的。微软的描述是:

对于帮衬 .NET Framework 4.0 或更高版本的应用程序,version 属性提醒 CLQX56版本,那是 .NET Framework 4 及越来越高版本的通用版本,而 sku 属性提醒应用程序所指向的单个 .NET Framework 版本。

实际看来此间大家就能有四个左近不错的表明:

  1. 不管大家接收的靶子框架是 .Net Framework 4.x 的哪壹个版本,用于指定CL智跑 运转时版本的 version 值都是 v4.0;
  2. CLLacrosse运转时会依据配置文件的 sku 值决定应该运用那生机勃勃组运营库来为程序运维提供支撑。

.Net Framework 的结缘以至各部分的版本

我们必要查究到 .Net Framework 的面目,不然这么复杂的版本号系统真把笔者搞懵了。

微软在 .NET Framework Versions and Dependencies 中说到:

种种版本的 .NET framework 都蕴含公共语言运营时 (CLWrangler卡塔尔国、底工库和其余托管库。

于是大家争论 .Net Framework 的本子其实应当分八个例外的部分来谈:

每种新本子的 .NET Framework 都会保留早期版本中的效能并会增多新功用。 CL帕杰罗 有其自个儿的本子号标记。 即便 CLLX570 版本并不三回九转依次增加的,但 .NET Framework 版本号在历次发布时都会依次增加。 比如,.NET Framework 4、4.5 和更加高版本包括 CL宝马X5 4,而 .NET Framework 2.0、3.0 和 3.5 包罗 CL奇骏 2.0。 (未有版本 3 的 CL瑞鹰。)

从官方文书档案给出的表格在那之中大家得以确信:.Net Framework 4.0/4.5/4.6/4.7 满含的 CL奥迪Q5 版本都以 4.0。

CLR 的更新

唯独,不相信微软的 CL宝马X5 能够完全未有 BUG,既然 CLLAND 版本都是4.0,那么微软对 CLPAJERO 运维时的换代怎么管理?安装了 .Net Framework 4.5/4.6/4.7 会如何进步 CL瑞鹰 的平稳和安全性?

在 Targeting and Running .NET Framework apps for version 4.5 and later 中,解释了 CL奥德赛 的翻新机制——就地更新(in-place update)。这篇作品 .NET 4.5 is an in-place replacement for .NET 4.0 对这种就地更新形式有比法定文档更详尽的解说,况兼还捎带本人的某个质量评定(含代码)。可是小说是 2011 年写的,部分结论未来看来已经不符合时机(因为在自家的 Windows 10 配 .Net Framework 4.7 上敲定已经不相同等),不过对自己领悟就地更新本身特别常有援救,也为持续考查提供了更明显的笔触。

微软对 .Net Framework 4.x 框架就地更新的表明是:

.NET Framework 4.5 是顶替计算机上的 .NET Framework 4 的当庭更新,同样,.NET Framework 4.5.1 4.5.2、4.6、4.6.1、4.6.2 和 4.7 是对 .NET Framework 4.5 的当庭更新,那代表它们将应用同生机勃勃的运作时版本,不过程序集版本会更新并包括新品类和成员。 在装置当中有些更新后,你的 .NET Framework 4.NET Framework 4.5 或 .NET Framework 4.6 应用应继续运营,而无需重新编写翻译。 不过,反过来则丰盛。

也正是说,无论大家在开拓时钦点目的框架的本子是 4.x 的哪二个,在运转时,CL科雷傲 情形都以 4.0。可是新的 .Net Framework 会带来更新版本的 CL揽胜极光,那些 CLEscort 会直接沟通掉旧的 CLRubicon。.NET 4.5 is an in-place replacement for .NET 4.0 文章中 .Net Framework 功底库也是就地更新的;但自身其实试验的情事是每四个不如的 .Net Framework 底蕴库有自个儿独立的文本夹,近来尚不清楚那个修正是从 .Net Framework 的哪三个版本最早的,但必然是 4.5.1、4.5.2、4.6 那三个本子中的一个。

图片 1

赶尽杀绝后生可畏从前的疑难

于是,本文风姿罗曼蒂克开端的疑问就整个清楚了:

  1. 无论是 .Net Framework 4.5 的依然 4.7 的那四个程序,都是靠 4.0 版本的公共语言运维时(CL凯雷德)运维起来的;
  2. 假使未有设置 4.0 版本的 CLENCORE,则会弹出提醒须求安装 .Net Framework 4.0 版本才具运作,而不管我们的程序目的框架是 .Net Framework 4.x 的哪三个本子;
    • 就算说文案说的是 .Net Framework,但实在须求的是 CLHighlander
  3. 风流浪漫经已经设置有 4.0 版本的 CL大切诺基(大概随 .Net Framework 4.5/4.6 安装),我们前后相继的目的框架是 .Net Framework 4.7,但 .Net Framework 根基库并从未安装 4.7 版本,则运维时会提醒供给设置 .Net Framework 4.7;
    • 以此提示是 4.0 版的 CLLX570弹出的,是依赖 supportedRuntime 中钦赐的 sku 值来调控的

仿照效法资料

  • supportedRuntime Element - Microsoft Docs
  • .NET Framework Versions and Dependencies - Microsoft Docs
  • .NET 4.5 is an in-place replacement for .NET 4.0 - Rick Strahl’s Web Log
  • app config - What does “SKU” (attribute) mean in C#? - Stack Overflow
  • .net - What happens if I remove the auto added supportedRuntime element? - Stack Overflow

本文仲日常更新,请阅读原来的小说: https://walterlv.github.io/dotnet/2017/09/22/dotnet-version.html ,以幸免陈旧错误知识的误导,同一时间有更加好的翻阅经历。

本文由龙8官网long8发布于电脑单机游戏网,转载请注明出处:程序到底运行在哪个

关键词:

上一篇:不信任症

下一篇:恰同学少年的我们