2

NGEN.EXE を使用して、MSIL アセンブリをネイティブ アセンブリにコンパイルできます。ただし、ソース コードがある場合は、プロジェクト オプションで [プラットフォーム ターゲット] を選択することもできます。そこで x64 を選択すると、x64 マシンで NGEN.EXE を実行するのと同じことになりますか?

4

1 に答える 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 に答える