14

(所有尺寸参考均采用打包尺寸,而非部署/安装尺寸)

基本上,以前的 .NET Framework 3.5 大小只有几百 MB(231.5 MB),3.5 不存在客户端配置文件,但是,4.0 版确实存在客户端配置文件,大小只有 41 MB,而4.0 的完整安装(非 CP)大小为 48.1 MB。

现在,他们说(在问题末尾发布的链接中)大多数应用程序往往需要客户端配置文件 4.0 中未涵盖的类和命名空间,因此他们决定不为 4.5 执行客户端配置文件。他们引用的另一个原因是,由于他们能够将 .NET Framework 4.5 的完整安装版本降低到 50 MB,这也减少了创建客户端配置文件版本的需要(因为 .NET 4.5 完整安装只有 9 MB大于 .NET 4.0 客户端配置文件),并且仅比等效的完整安装(独立脱机安装程序)大 1.MB。

现在,我的问题实际上只有两部分,如下:

1)。当 4.0 和 4.5 版本在 3.5 及以下版本中修复了如此多的问题并添加了如此多的功能时3.5 及以下,而包装尺寸要小几倍?

2)。这是客户端配置文件的最终决定,还是有一天我们会看到.NET 4.5?

3)。4.5 怎么可能只比 4.0 大 1.9 MB,同时解决了这么多的问题,并添加了这么多功能?

更新:( 以及任何愿意的人的潜在第四个问题):

@Gromer 提出了一个有趣的观点,即不包括语言包。由于他们需要包含 1 种语言,我假设它是英语,这是默认的吗?如果是这样,当大多数人甚至不知道/不了解“.NET Framework”是什么时,普通互联网用户如何下载和安装语言包以供自己使用和语言?我错过了什么或者这不重要吗?框架多久以口语或对话框与最终用户交流一次?

我得到一些信息的文章如下:

http://blogs.msdn.com/b/dotnet/archive/2012/10/12/improvements-in-net-framework-setup-for-developers-it-pros-and-users.aspx

4

4 回答 4

10

如果您查看 3.5“独立”安装程序,您会惊讶地发现那里有多少子设置。

dotnetfx35_with_sp1.exe为例:它是一个 231MB 的大型链式安装程序。当你用

dotnetfx35_with_sp1.exe /x:myfolder

你得到一个 240Mb 的文件夹,分成几个其他文件夹:

dotNetMSP [111.2Mb] ==> x64 [45.0Mb], ia64 [36.2Mb], x86 [29.7Mb], [other] 300k 
dotNetFX20 [47.6Mb] ==> about 50/50% between 32 and 64 bit
dotNetFX30 [46.8Mb] ==> x64 [24Mb], x86 [22Mb]
dotNetFX35 [31.5Mb] ==> ia64 [12.8Mb], x64 [10.8Mb], x86 [7.7Mb]
...and some other files around...

如您所知,.NET 3.5 需要 .NET 3.0 和 .NET 2.0,这正是您在此处看到的内容。即使不包含语言包,它们也必须针对许多不同的平台(从 Windows XP 开始)并包含很多补丁。

前进到 .NET 4.x,这些对先前框架的依赖已被删除,同时,它们支持更少(和更新)的操作系统和平台(例如 ia64 支持 - 这对文件大小非常重要 -现在几乎消失了)。

从我在较新的设置中看到的情况来看,他们也可能已经改变了他们运送框架的内部格式,可能是一种更有效的压缩..

最后但并非最不重要的一点是,他们改变了许多内部架构,重写了很多东西,这反过来可能让他们删除了其他旧东西......

可能没有任何一个非凡的变化让他们大幅缩小尺寸:可能是以上所有以及更多:)

只是我的 2c :)

于 2013-03-01T15:58:49.787 回答
4

我找不到这方面的来源,但我相信 .Net framework 3.5 安装程序如此之大的原因是它包含所有程序集的预 JIT 版本(包括在某些情况下不会使用的程序集)目标平台不正确),而 .Net 4.0 安装程序没有 - 它在安装时对它们进行 JIT(这就是 .Net framework v4.0 的安装需要这么长时间的原因)

我还记得有人告诉我,.Net 4.5 安装会快得多,而不是作为安装的一部分 JITing 程序集,它会在 PC 空闲时在后台 JIT 它们(但是有一个过程可以立即 JIT 程序集应用程序尝试加载,但还没有被 JITed)

我目前正在努力寻找任何资源,但是当我找到它们时我会发布它们。

于 2012-10-19T16:39:14.167 回答
4

Scott Hanselman 雄辩地说:

为什么那个安装程序这么大?

巨大的 .NET 下载是为了一件事 - 它适用于可能想要重新分发不仅包含整个 .NET Framework,而且包含所有可能平台的安装程序的开发人员或管理员。它具有 x86、x64 和 ia64 的安装程序。

http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx

和:

关于 .NET Framework 的大小存在一些混淆。 .NET Framework 并不是真正的 200 多兆下载。

我使用哪个安装程序?以下是面向开发人员、ISV 和管理员的简明扼要的全部内容。

  • 离线安装程序 - 一个可以离线运行的文件,可以在任何运行它的系统上安装 .NET Framework。它是完整的,所有平台,可离线安装。

  • 在线安装程序 - 一个 2.7 兆的安装程序,它将检测您需要的文件,然后下载10 到 60 兆

这篇博文详细介绍了 Microsoft 如何使 .NET 4 框架平台安装更小。具体来说:

我们确定了 95% 以上的客户端应用程序使用的框架功能子集,并为此场景制作了一流的包。这样做的结果是,除非您正在利用 ASP.NET 等功能,否则您现在可以依赖较小的框架。

于 2012-10-19T16:25:11.853 回答
2

我个人的看法是,随着时间的推移,Microsoft 通过 Service Pack 和新的 Windows 版本将越来越多的核心 .NET Framework 功能直接集成到 Windows 操作系统中。

我相信,他们在 V 4.0 中重新设计了操作系统绑定,因此对于支持的操作系统而言,启动和运行 .NET 所需的代码库和额外资源会减少。例如,从 3.5 到 4.0 的支持列表中删除了所有 XP 特殊版本。在 4.5 中,操作系统基础进一步缩小(Vista/7/Win8 和 Server 2008/2013)。

同样像上面提到的那样,除了英语之外的语言被删掉了,其他一些特性被提取到 .NET SDK 包中。

只是我的两分钱。

于 2012-12-23T15:43:53.893 回答