2

您可以使用 NGEN.EXE 将 MSIL 程序集编译为本机程序集。但是当你有源代码时,你也可以在项目选项中选择“平台目标”。如果我在那里选择 x64,这与在 x64 机器上运行 NGEN.EXE 是一样的吗?

4

1 回答 1

3

不,这不是一回事。平台目标仅在 PE 标头中设置一个位,告诉运行时它是否更喜欢在 CLR 的 x86 或 x64 版本上运行(或中性,如果您指定“任何 CPU”)。编译仍然会产生 MSIL 代码;AFAIK,无法告诉 MS 编译器直接发出本机代码(目前)。

例如,当您 PInvoking 只有 x86 版本的本机 DLL 时,该标志很有用。

其实你也可以稍后修改这个位,使用CorFlags

相反,NGEN 会将 IL 编译为汇编代码(本机)。它也称为 AOT(提前)编译,而不是 JIT(及时)

于 2013-03-20T12:19:34.973 回答