Visual StudioがMSIL形式の場合、アプリケーションを実行可能ファイルにコンパイルするのはなぜですか?コードを.classファイルにコンパイルするのはJavaのようなものではありませんか?
2 に答える
.NET の「実行可能ファイル」は、実際には、AppDomain を作成し、スタートアップ .NET オブジェクトをインスタンス化し、それを呼び出す小さな _un_managed スタブ実行可能ファイルです。
.NET dll は、Java .class と同等です。
編集: - - -
Jb Evainはコメントで、.NET dll にはアンマネージ スタブも含まれていると指摘しています。スタブmscoree.dll
は、実際の作業を行う適切なエントリポイントにジャンプするだけです。CorExeMain
exeCorDllMain
用とdll用です。
.exe は OS にとって何かを意味するため、Windows は実行する別の実行可能ファイルの種類を登録する必要はありません。.EXE ファイルは、[実行] メニュー、コマンド ライン、およびシェルから「そのまま動作」します。
しかし、おそらくもっと重要なのは、人々が .exe ファイルの動作を期待するようになったためです。つまり、30 年近くの間、MS システムの主要な実行可能ファイル形式として .EXE ファイルを使用してきたということです。彼らが実行可能な .net アプリを、たとえば ".CLR" 拡張子にコンパイルした場合、誰もがそれをどうすればよいかを理解しているわけではなく、特に初期の頃は、.Net の採用が遅れていた可能性があります...