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