2010-06-30 171 views
12

我遇到了一个奇怪的问题。我已经安装了“Visual Studio 2010最终版”。安装时显示它已成功安装.NET 4.0。在安装其他软件时。他们抱怨.NET 2.0缺失并要求我安装它。.NET 4.0是否包含.NET 2.0?

这怎么可能? .NET 4.0的必须包含.NET 2.0的对象是否是

编辑:

现在,我很困惑。根据这个http://en.wikipedia.org/wiki/File:DotNet.svg CLR是.NET 2.0的一部分。安装.NET Framework 4.0意味着安装整个堆栈。其中还包括一个.NET 2.0。请清除这个混淆。

+1

你在什么操作系统上? Vista默认配备了.NET 2.0,而Windows 7配备了.NET 3.5 SP1。 – 2010-06-30 11:25:10

+0

“必须”是一个很重要的假设。 .Net 2.0不包括.Net 1.0,请记住? – 2010-06-30 11:27:37

回答

13

号.NET 4.0是一个独立的CLR,它不是基于2.0,不像3.0和3.5

0

如果我不是misstaken,2010年的目标.NET 4.0框架。看起来像你在计算机上缺少.Net 2.0框架。

0

据我知道CLR V2.0.50727以上工作v4.0.30319

0

是的,没有 - 你可以在.NET 4运行时上运行.NET 2的代码,但它们是独立的运行时引擎。

根据安装程序检查.NET的方式,它不能检测到4或者它可能拒绝它是错误的:尽管在开发的确切环境中运行代码是最安全的。

2/3.5是一个并行安装。我建议你只是安装它 - 它不应该导致你任何问题。

8

.NET 4.0是运行时的新版本,它独立于.NET 2.0。

该框架的新版本不包含以前的版本,它们构建为具有特定功能集的特定版本。 .NET 4.0有一个新的运行时和更新的BCL(基类库)。 BCL基本上具有与.NET 2.0/3.0/3.5 BCL类似的所有类型(尽管可能会发生重大变化)以及一些新的东西。两个框架版本(v2.0和v4.0)并行运行。

您没有安装.NET 2.0的事实令人担忧,因为它是通过Windows Update服务分发的。你在使用什么操作系统?

+0

Windows XP ____ – pecker 2010-06-30 11:27:40

+0

这是在企业环境中吗? 我将下载并安装.NET Framework 3.5,其中包括运行时v2以及v3.5 BCL http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A- 413D-8319-81DA479AB0D7&displaylang = en – 2010-06-30 11:33:13

4

正如其他人已经说过的,.net 4.0有一个新的CLR,它与.net 2.0 CLR不同。

默认情况下,应用程序将尝试在其构建的CLR上运行。

您可以修改与<SupportedRuntime> element的applications.exe.config文件明确地告诉它运行时将应用程序支持系统(顺序指定了优先):

<configuration> 
    <startup> 
     <supportedRuntime version="v2.0.50727"/> 
     <supportedRuntime version="v4.0.30319"/> 
    </startup> 
</configuration> 

(显然,如果有东西在你的应用程序是依赖于.NET 2.0中的东西已经改变,那么这仍然会失败)

不幸的是,如果您的应用程序无法安装,这是因为安装程序是明确检查.NET 2.0中存在,而不是版本> = 2.0,如果是这种情况,你可以尝试寻找。zip下载而不是安装程序,但除此之外,除了安装.net 2.0以外,没有太多可以做的事情 - 完全支持多个版本的并排安装。

5

问题是有两个“东西”当您参考.NET 2.0.NET 4.0

这是事实:

  • 的.NET 4.5框架类库
  • 包含一切从.NET Framework类库
  • 包含一切从.NET 3.5 SP1框架类库
  • 包含了.NET 3.0 SP2 Framework类库中的所有内容。
  • 包含了.NET 2.0 SP2 Framework类库
  • 包含一切从.NET 1.1 SP1框架类库

从微软的.NET Framework Versions and Dependencies使用有益图: enter image description here

的问题是,框架运行不同。有版本的.NET框架,但只有版本的.NET CLR(公共语言运行库):

  • CLR 1.1:附带的.NET Framework 1.1
  • CLR 2.0 :附带的.NET Framework 2.0 SP2,3.0 SP2,3.5 SP1
  • CLR 4.0:附带.NET框架4
  • CLR 4.5:附带的.NET Framework 4.5

这意味着如果你安装.NET Framework 4,你仍然可以使用你在.NET 2.使用回不过类,如果你的应用程序需要CLR它不会工作的第2版 - 因为这CLR 2.0未与.NET Framework一起安装4.0

+0

出于兴趣 - 图像来自哪里?它没有出现在链接上。 – Kye 2014-08-18 06:10:14

+1

@Kye它曾经在那里。微软自从删除它。 [但他们无法将它从archive.org移除!](https://web.archive.org/web/20120201195011/http://msdn.microsoft.com/en-us/library/bb822049(v = VS 0.110)的.aspx) – 2014-08-18 17:20:35