web-dev-qa-db-ja.com

.NET Framework 4.5のフルインストールは50MBしかありません(クライアントプロファイルがもうないため)?

(すべてのサイズ参照はパッケージサイズの用語であり、展開/インストールされたサイズではありません)

基本的に、以前の.NET Framework 3.5のサイズは数百MB(231.5 MB)であり、クライアントプロファイルは3.5には存在しませんでしたが、バージョン4.0のクライアントプロファイルは41MBのサイズしか存在しませんでした。 4.0のフルインストール(CPではない)のサイズは48.1MBでした。

現在、彼らは(質問の最後に投稿されたリンクで)ほとんどのアプリがクライアントプロファイル4.0でカバーされていないクラスと名前空間を必要とする傾向があると言っているので、その理由で4.5のクライアントプロファイルを実行しないことにしました。彼らが引用したもう1つの理由は、.NET Framework4.5のフルインストールバージョンを50MBまで下げることができたため、クライアントプロファイルバージョンを作成する必要性も減ったことです(.NET4.5フルインストールは9MBしかないため) .NET 4.0クライアントプロファイルよりも大きく、同等のフルインストール(スタンドアロンオフラインインストーラー)よりもわずか1MB大きい。

さて、私の質問は、実際には次の2つの部分に分かれています。

1)。 4.0および4.5バージョンが3.5以下で非常に多くの問題を修正し、それ以来非常に多くの機能を追加した場合、一体どうやって3.5以下(3.0、2.0)バージョンのサイズを数百MBにすることができますか(私の熱意を失います) 3.5以下、パッケージサイズは数分の1になりますか?

2)。これはクライアントプロファイルの最後の単語ですか、それとも.NET 4.5用の単語がいつか表示される可能性がありますか?

3)。人間の問題を修正し、非常に多くの機能を追加しながら、4.5が4.0よりもわずか1.9 MB大きいのはどうしてですか?

更新:(そして喜んでいる人への潜在的な4番目の質問):

@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

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...

ご存知のように、.NET3.5には.NET3.0と.NET2.0が必要です。これはまさにここに表示されているものです。言語パックを含めなくても、さまざまなプラットフォームをターゲットにする必要がありました(windows XP以降)そして多くのパッチを含めること。

.NET 4.xに進むと、以前のフレームワークへの依存関係はなくなり、同時に、サポートするオペレーティングシステムとプラットフォームが少なくなります(たとえば、ia64サポート-ファイルサイズが非常に重い-そして今ほとんど消えています)。

私が新しいセットアップで見たものから、彼らはまた、フレームワークを出荷する内部フォーマットで何かを変更した可能性があり、おそらくより効率的に圧縮されています。

大事なことを言い忘れましたが、彼らは多くの内部アーキテクチャを変更し、多くのことを書き直しました。これにより、おそらく他の古いものを削除できるようになりました...

おそらく、サイズをそれほど落とすような特別な変更は1つもありません。おそらく、上記のすべてとそれ以上です:)

ちょうど私の2c :)

10
Luke

スコット・ハンゼルマンはそれを雄弁に語っています。

その1つのインストーラーがなぜそんなに大きいのですか?

その巨大な.NETダウンロードは1つの理由です。これは、.NET Framework全体だけでなく、考えられるすべてのプラットフォームを含むセットアップを再配布したい開発者または管理者を対象としています。 x86、x64、ia64用のインストーラーがあります。

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

そして:

.NETFrameworkのサイズについていくつかの混乱がありました。 。NETFrameworkは実際には200メガ以上のダウンロードではありません。

どのインストーラーを使用しますか?開発者、ISV、および管理者向けの概要は次のとおりです。

  • オフラインインストーラー-オフラインで実行でき、実行されている任意のシステムに.NETFrameworkをインストールできる単一のファイル。それは完全で、すべてのプラットフォームで、オフラインでインストールできます。

  • オンラインインストーラー-必要なファイルだけを検出し、ダウンロードする2.7メガのセットアッププログラム10〜60メガ

このブログ投稿 Microsoftが.NET4フレームワークプラットフォームのインストールをどのように小さくしたかについて詳しく説明します。具体的には:

クライアントアプリケーションの95%以上で使用されているフレームワーク機能のサブセットを特定し、このシナリオのファーストクラスパッケージを作成しました。この結果、ASP.NETなどの機能を利用していない限り、より小さなフレームワークに依存できるようになります。

4
Robert Harvey

これのソースは見つかりませんが、.Net Framework 3.5インストーラーが非常に大きかった理由は、すべてのアセンブリの事前にJITされたバージョン(場合によっては使用されないものも含む)が含まれていたためだと思います。は正しくないプラットフォームを対象としています)、. Net 4.0インストーラーはそうではありません-インストール時にそれらをJITします(これが.Net Framework v4.0のインストールに非常に時間がかかる理由です)

また、.Net 4.5のインストールは、インストールの一部としてアセンブリをJITするのではなく、PCがアイドル状態のときにバックグラウンドでJITするので、はるかに速くなると言われたことを思い出します(ただし、アプリケーションがロードしようとするJITアセンブリはすぐに実行されますが、まだJITされていません)

現時点では、このソースを見つけるのに苦労していますが、見つけたら投稿します。

4
Justin

私の個人的な意見では、Microsoftは、時間の経過とともに、サービスパックと新しいWindowsリリースを使用して、コア.NETFrameworkの機能をWindowsオペレーティングシステムに直接統合するようになっています。

彼らはV4.0でオペレーティングシステムのバインディングを再設計したので、サポートされているオペレーティングシステムのコードベースと.NETを起動して実行するために必要な追加のリソースが減少すると思います。例えば。すべてのXP特別版は3.5から4.0の間にサポートリストから削除されました。4.5ではOSベースはさらに縮小しています(Vista/7/Win8およびServer2008/2013)。

また、上記のように、英語以外の言語などの機能が削除され、他のいくつかの機能が.NETSDKパッケージに抽出されました。

ちょうど私の2セント。

2
ZeroCool