NGEN和平台的目标是同一个吗?

时间:2013-03-20 12:16:59

标签: .net ngen

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

1 个答案:

答案 0 :(得分:3)

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

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

事实上,您也可以稍后使用CorFlags

修改此位

NGEN将编译IL到汇编代码(本机)。它也被称为AOT(Ahead Of Time)编译,而不是JIT(Just In Time)