Microsoft が .Net Framework のソースをリリースしたので、次のことが気になりました。
どうにかして .Net コードを、clr や jit を実行する必要のないネイティブ実行可能ファイルにコンパイルできますか?
いいえ、いくつかの理由でそうではありません。
最初の問題は、ソースが Reference License ( Reference ) の下でリリースされていることです。
私は弁護士ではありませんが、そのライセンスについて理解していることは、コンテンツの再配布は許可されていないということです。
第二に、新しい有用なデータを方程式に追加しません。基本的に、実行可能ファイルとそのすべての依存関係を 1 つの独立した実行可能ファイルに結合するプログラムは、CPP リンカー ツールと非常によく似た操作を実行します。これは、ソース コードがない場合に、バイナリとそのすべての依存関係を 1 つの実行可能ファイルに結合することです。
.Net アセンブリのすべての依存関係情報は、アセンブリのメタデータを調べることで判断できます。ソースはここでは何の価値もありません。
.Net フレームワークのソース コードが実際に役立つのは、それを 1 つのアセンブリに結合する新しいコンパイラをまとめて作成する場合のみです。それでも、CLR を同じ実行可能ファイルに入れるには、リンカー スタイルのソリューションが必要です。
単にいいえ。リリースされたソース コードは、.NET ランタイム自体ではなく、フレームワーク (すべてのフレームワークではありません) 用です。したがって、Microsoft から取得できるコードを実行するには .NET をインストールする必要があり、ネイティブ アプリケーションに近づくことはできません。
これを見てください:
特定のフレームワーク ソース ファイルのデバッグ目的のみの配布について言及していますか?
これらは完全ではありません (特に、ネイティブ コードで記述されたセクションが欠落しており、ランタイム自体ではなくクラス ライブラリのみで構成されています)。
本当にこれが必要な場合は、モノから始めるのが良いでしょう。また、clr はリフレクション、ガベージ コレクション、コード生成などを提供するため、「削除」するだけの問題ではないことを認識してください。その時点で .NET の互換性のあるサブセット。
実行可能ファイルを NGEN するだけでは十分ではありませんか?