【问题标题】:Compile .NET assembly into x86 machine code将 .NET 程序集编译成 x86 机器码
【发布时间】:2011-09-06 02:27:29
【问题描述】:

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

据我所知,如果您只是将 x86 指定为体系结构,这只会更改 PE 标头以将其指向 JIT,但程序集仍将包含 MSIL 并将根据需要进行 JITTed。

NGen 确实为指定架构生成程序集文件,但它不是编译器,它旨在提高性能,但您仍然需要原始 DLL,本机映像的存在仅用于避免 JIT 编译程序集,但您可以不获取该本地图像并使用它,可以吗?

那么,有没有什么方法可以真正从 .NET 编译为本机代码?

【问题讨论】:

  • 我会感到惊讶 - 这不是需要将大部分 CLR 编译为汇编程序吗?

标签: c# .net .net-assembly native-code


【解决方案1】:

您可以使用称为 .NET Native 的新预编译技术来做到这一点。在这里查看:http://msdn.microsoft.com/en-US/vstudio/dotnetnative

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

【讨论】:

  • 这应该是最佳答案:.NET Native 是 C#/.NET 的一个重要里程碑,并且可以满足 SO 的要求。
  • @karim:请记住,这个问题是 3 年前提出的 :)
【解决方案2】:

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

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

【讨论】:

  • Spoon.net 不再是一个东西,但它现在是 turbo,它基本上将一个解决方案容器化,这与原始问题的内容有点相反。 DotNetNative 有其缺点,目前是一种更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
相关资源
最近更新 更多