NGEN.EXE を使用して、MSIL アセンブリをネイティブ アセンブリにコンパイルできます。ただし、ソース コードがある場合は、プロジェクト オプションで [プラットフォーム ターゲット] を選択することもできます。そこで x64 を選択すると、x64 マシンで NGEN.EXE を実行するのと同じことになりますか?
質問する
181 次
1 に答える
3
いいえ、同じことではありません。プラットフォームターゲットは、PEヘッダーにビットを設定するだけで、x86またはx64バージョンのCLR(または、「任意のCPU」を指定した場合はニュートラル)で実行するかどうかをランタイムに通知します。コンパイルは引き続きMSILコードを生成します。ちなみに、MSコンパイラにネイティブコードを直接出力するように指示することはできません(今のところ)。
このフラグは、たとえば、x86バージョンしかないネイティブDLLをPInvokingする場合に役立ちます。
実際、 CorFlagsを使用して、このビットを後で変更することもできます。
代わりに、NGENはILをアセンブリコード(ネイティブ)にコンパイルします。JIT(Just In Time)とは対照的に、AOT(Ahead Of Time)コンパイルとも呼ばれます。
于 2013-03-20T12:19:34.973 に答える