2

プロジェクトをマネージコードに移行することを検討していますが、.NETランタイムは巨大であると聞いています。実際、実行可能バイナリの数倍です。それはちょうど私に犬を振っている尾のように思えます。しかし、Monoなどの一部のCLR実装はモジュール式であり、実際に必要な部分のみを含むカスタムディストリビューションを作成できるとも言われています。

問題は、これについての非常に単純な質問であるはずの答えをGoogleで見つけるのに驚くほど困難なことです。さまざまな実装での完全なCLRパッケージの大きさ、このモジュラー配布機能をサポートするもの、および大量の.NETベルを使用しない標準のWindowsスタイル(フォームベース)アプリのランタイムの大きさと笛?(私が最も興味を持っているのは、プラグインを簡単に作成するアセンブリシステムの固有の機能と、JITコンパイルを介してプログラムにスクリプトを組み込む機能です。)

編集:インストーラーのサイズやダウンロード時間には興味がありません。エンドユーザーのシステムで使用されるため、実際のフレームワークのサイズを知りたいのですが、圧縮されておらず、すぐに実行できます。

4

7 に答える 7

2

このサイトは面白いかもしれません。

http://www.hanselman.com/smallestdotnet/

于 2008-11-03T19:15:42.543 に答える
1

通常、正規の Microsoft Windows を搭載し、自動更新を取得するように設定されているインターネットに接続されたコンピュータのほとんどには、フレームワークがインストールされている必要があるため、サイズについて心配する必要はありません。確かに、バージョン 2.0 が最も人気があるように思われるので、バージョン 2.0 をお勧めします。また、「クライアント プロファイル」と呼ばれる .net フレームワークの小さいバージョン (サブセット) があることにも注意してください。

これについても考えてみてください: 外部ライブラリ (つまり、MFC/ATL/VB ランタイム) を使用している場合は? これらの依存関係を含めると、アプリケーションは .net フレームワークと同じか、それより大きくないサイズに達する可能性があります。

確かに、古いシステム (2000 SP4 より前) には問題がありますが、これは対象となる顧客と、最終的には目的によって異なります。

後で編集: 必要な依存関係 (アプリケーションに必要なバージョン) を自動的にダウンロードするようにアプリケーションのインストーラーを設定できます。また、ClickOnceWeb サイトから (更新を提供することにより) アプリケーションを比較的簡単にデプロイおよび維持するためのテクノロジを使用することもできます。

于 2008-11-03T19:27:06.717 に答える
1

「ダウンロード サイズ」ではなく、「インストール時に使用されるディスク」が必要なようです。これは測定するのに特に役立つものではなく、答えは「基本的にわかりません」ですが、興味のために私のデータを次に示します。

Microsoft.NET\FrameworkWindows Vista PC のディレクトリ (フレームワークがすべて存在する場所) のWindows ディレクトリを見ると、次のディレクトリがあります。

  • v1.0.3705: 400k
  • v1.1.4322: 493 バイト

ただし、実際にはこれらのフレームワークがインストールされていないことに注意してください。Vista にはおそらく、互換性のためにエイリアスがいくつかあるだけです。とにかくこれらのバージョンを使用して開発することは決してないでしょう.

ここからが興味深いところです。

  • 「Framework」ディレクトリ自体には 356 k のファイルがあります
  • v2.0.50727: 152MB
  • v3.0: 10.5MB
  • v3.5: 24.7MB

には「グローバル アセンブリ キャッシュ」もありC:\Windows\assembly、私の PC では 530 MB まで実行されますが、これらのファイルの一部は他のディレクトリにハードリンクされているため、カウントされません。

ただし、これは誤解を招きます。3.0 と 3.5 は 2.0 の「上で」実行され、それらを単独で使用することはできません。

それは生データですが、そのように数字を見るだけでは簡単ではありません。

  1. Visual Studio 2005 および 2008 がインストールされています。これにより、数百 MB のデバッグ DLL が得られます。

  2. また、Microsoft Visual J# 2.0 Redistributable PackageVisual Studio のインストールの一部であり、誰も使用しない J# を使用しない限り、クライアント PC には必要ありません。それは7MBです

  3. すべての dll のデバッグ コピーに加えて、framework\v2.0 ディレクトリに合計 69 MB の XML ドキュメント ファイルもあります。

  4. Vista を使用している人は、既に v2.0 と v3.0 のディレクトリを持っており、.NET 3.5 もインストールしていない限り、v2.0 のディレクトリはかなり小さくなります。したがって、特に .NET 3.5 をターゲットにしている場合を除き、Vista での「展開コスト」はゼロです。

より現実的な「クライアント」データについては、.NET 2.0 のみを基本的にインストールした Windows XP SP2 PC を使用しています。その数値は次のとおりです。

  • Windows\Microsoft.NET\Framework\v2.0.50727: 64 MB
  • Windows\assembly: 92 MB (ハードリンクのため、実際にはそれほど大きくないことに注意してください)

少し前に、winXP で .NET 2.0 を使用する場合に「130 メガバイトが必要」と表示されたのを覚えていますが、これはほぼ正しいように思えます。

さて、これは多くのように聞こえますが、これと対比するためのいくつかのデータがあります:

VC++ 2008 ベースの dll (vc、mfc、atl) は 10 MB であり、機能の点でほとんど提供されません。私の経験では、適切な機能セットを備えた C++ アプリケーションをビルドするまでに、約 4 ~ 5 メガの実行可能ファイルと dll が出荷されていることになります。対照的に、私が少し前に作成した同等の機能を備えた .NET アプリには、800k の dll と実行可能ファイルがあり、そのほとんどは埋め込みアイコンとビットマップで占められていました。

最近では、.NET ランタイムが完全に勝利を収めるまでに、それほど多くのアプリは必要ありません。

于 2008-11-03T20:39:11.720 に答える
0

Scott Hanselman は、さまざまな .NET ディストリビューションのサイズと、それらがソフトウェア ディストリビューションに与える影響についての有益なブログ投稿を行っています。

于 2008-11-03T19:16:55.287 に答える
0

CLR ランタイムは、フレームワークのインストール時にインストールされます。私の記憶が正しければ、.NET 2.o のインストーラーのサイズは約 35 ~ 40Mb です。3.0 と 3.5 についてはわかりません。Microsoft のダウンロードを調べて、アイデアを得ることができます。

フレームワークがすでにインストールされていることがますます一般的になりつつあります。また、フレームワークは他のアプリケーションによって使用されるサービスであるため、多くの場合、アプリケーションのフットプリントの一部とは見なされません。

マイクロソフトのバージョンで「モジュール化」する方法を知りません

于 2008-11-03T19:19:24.003 に答える
0

認識しなければならないことは、すべての言語には何らかの CLR が必要だということです。C/C++ であっても、オペレーティング システムに組み込まれているものに依存します。Java のバージョンは JVM であり、もちろん .NET のバージョンもあります。サイズが本当に心配な場合は、誰かが最小の .NET をリンクしています。これは良い出発点です。

ほとんどの人は、少なくとも .NET1.0 を既にインストールしていることを覚えておいてください。移植性が非常に重要でない限り、.NET フレームワークは依存関係にあると述べるのが最善です。

于 2008-11-03T19:24:59.093 に答える
0

調べることができるルートは、 http://www.codeplex.com/crossnetのような C++ に変換するツールです。機能自体は完全でも完璧でもありませんが、より高いレベルのプログラミングが可能になり、.Net フリーになる自由が得られます。

于 2008-11-03T19:30:00.003 に答える