问题 将.NET程序集编译为x86机器代码


有没有办法将.NET程序集编译为本机代码(即x86)输出,即没有MSIL。

根据我的理解,如果你只是将x86指定为体系结构,那么只会更改PE标头指向JIT,但程序集仍将包含MSIL,并将根据需要进行JITT。

NGen确实为指定的体系结构生成汇编文件,但它不是编译器,它的目的是提高性能但是你仍然需要原始的DLL,本机映像的存在只能避免JIT编译汇编但是你无法获得原生图像并使用它,可以吗?

那么,有没有办法从.NET实际编译到本地机器代码?


9451
2018-06-01 08:34


起源

我会感到惊讶 - 这不是需要将CLR的大部分内容汇编成汇编程序吗? - Jon Egerton


答案:


您可以使用名为.NET Native的新预编译技术来完成此操作。看看这里: http://msdn.microsoft.com/en-US/vstudio/dotnetnative 

目前,它仅适用于Windows应用商店应用。它执行单个组件链接。因此.NET Framework库静态链接到您的应用程序。所有内容都编译为本机,不再部署IL程序集。


3
2018-04-21 01:12



这应该是最重要的答案:.NET Native是C#/ .NET的一个重要里程碑,并且做了SO所要求的。 - quantdev
@karim:请记住3年前问的问题:) - Johann Blais


Spoon Studio(之前被命名为Xenocode)似乎能够做到这一点: http://spoon.net/Studio/Features.aspx

RemoteSoft也有产品,但网站看起来很旧: http://www.remotesoft.com/linker/


10
2018-06-01 08:50



Spoon.net不再是一个东西,但它现在是turbo,它基本上包含一个解决方案,这与原始问题的内容有点相反。 DotNetNative有其缺点,目前是一种更好的方法。 - Jorge Córdoba