JavaコードがJVMによって実行されるバイトコードにコンパイルされていることを私は知っています。
C#の場合はどうなりますか?.exe
C#で記述されたアプリケーションには、ネイティブのマシン命令であることを示唆する拡張子が付いていることに気づきました。しかし、それは本当にそうですか?
JavaコードがJVMによって実行されるバイトコードにコンパイルされていることを私は知っています。
C#の場合はどうなりますか?.exe
C#で記述されたアプリケーションには、ネイティブのマシン命令であることを示唆する拡張子が付いていることに気づきました。しかし、それは本当にそうですか?
いいえ。
Javaと同様に、C#は中間言語(MSILまたはCILと呼ばれる)にコンパイルされます。
Javaとは異なり、ILはEXEファイルに保存されます。このファイルには、ユーザーに.Netのインストールを求めるダイアログボックスを表示するのに十分な実際のEXEコードが含まれています。
C#のコンパイルは次の2つのステップで行われます。
1. Conversion from C# to CIL by the C# compiler
2. Conversion from CIL to instructions that the processor can execute.
コンポーネント(ジャストインタイム)は、CILからマシンコードへの実行時にこのコンパイルを実行します
その.exeがあなたに伝えることになっているのは、ファイルが実行可能であるということです。C#はJavaと同じようにバイトコードにコンパイルされますが、.NETはこれをCLR実行可能ファイルにラップします。
CLR実行可能ファイルの詳細については、こちらをご覧くださいhttp://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/
c#コードはMSILにコンパイルされます。Javaバイトコードが好きです。msilは、実行時にマシンの機能に変換されます。
C#コードはMSILにコンパイルされ、MSILは.NETCLRによって処理されます
C#をスタンドアロンのバイナリ実行可能ファイルにコンパイルできるプロジェクトもあります:CoreRT