.Net フレームワークをバンドルせずに .Net アプリをリリースするにはどうすればよいですか?
質問
.Net Framework をバンドルせずにアプリケーションを出荷するという奇妙な要件があります (メモリ フットプリントと帯域幅を節約するため)。
これは可能でしょうか?お客様は、システムに .Net ランタイムをインストールしている場合もあれば、インストールしていない場合もあります。
Ngenをやればこの問題は解決するでしょうか?私は、C++ アプリをリリースする古き良き方法 (リンカーを使用して必要なバイナリのみをリンクする) のようなものを探していました。
解決
Ngen を使用しない 1 つのオプションは、.Net Framework 3.5 SP1 の「クライアント プロファイル」を使用してリリースすることです。これは、クライアント アプリケーションの構築に使用される .Net Framework のサブセットであり、別個のはるかに小さいパッケージとしてダウンロードできます。
詳細は、 BCLチームのブログはこちら そして スコット・ガスリーはこちら.
他のヒント
このような状況における一般的な解決策は、Windows Update の一部となり次第、顧客が適切なバージョンの .Net Framework を入手する必要があるという事実上の標準です。したがって、インストーラは、クライアントのマシンで使用しているバージョンの .NET が利用可能かどうかを確認し、Microsoft からダウンロードすることを提案する必要があります。これにより、会社がチャネルを通じてデータを転送することがなくなり、アプリケーションに正しいインフラストラクチャが確保されるようになります。
サラマンダーはチェックしましたか?リモートソフト
参考までに、
このトピックはすでに議論されています。残念ながら、現時点ではリンクが見つかりません (SO 検索は改善されるはずです)。
わかりました、同様の質問を見つけました:
まったく同じ質問があったことを思い出しましたが、見つかりません:(
ソフトウェアに .NET が必要な場合、エンド ユーザーは同じバージョンの .NET を必要とします。MFC や Delphi のように、.NET を実行可能ファイルに「リンク」して単一の .exe を作成することはできません。インストーラーが .NET ランタイムをインストールしない場合は、ユーザーにそのことを認識させ、Microsoft からの .NET ダウンロードを指示する必要があります。
デスクトップ アプリケーション用の .NET Framework のサブセットである「クライアント プロファイル」を使用できます。クライアントプロファイルのサイズは約20MBです
VS で作成されたブートストラップ 'setup.exe' を含めることもできます。必要な .net バージョンがあるかどうかが検出され、ある場合はインストーラーが起動します。そうでない場合は、フレームワークをダウンロードするように求められます。