.net - 是否可以通过垃圾收集创建 native 代码?

标签 .net c++-cli

是否可以使用垃圾收集来编写 C++/CLI 代码,并将其编译为 native 机器代码(提前,而不是 JIT)?

最佳答案

简而言之:否(但见下文)

长话短说:

如果您使用 C++/CLI,您会自动使用 IL-Code,它可以使用 dotPeek 轻松反编译。或其他工具。但你有GC;)

如果您只想让 C++/CLI 项目的某些部分成为 native ,那么您可以禁用该文件的“/clr”选项(或者更好:仅对真正需要 .网络支持!)。坚果 native 部分你没有 GC ;(

或者,您也可以使用 pragma managed/unmanaged 标记代码的特殊部分。

#pragma managed
#pragma unmanaged

NGEN 创建程序集的预编译镜像,但不隐藏 .net 代码;因此,只有当您的程序集存在启动计时问题时,这才有用。通常只有当您有 UI 应用程序时它才有意义。还有一个副作用是生成的组件有时比抖动的组件慢。所以我从不使用 ngen...

但是:

但是微软现在发现这有几个问题。 MS 正在针对这种情况进行一些改进。目前仅适用于商店应用程序,但我认为这也将改进以适用于“普通”.NET 应用程序。 这意味着:您可以编写具有完整 GC 支持的 .NET 应用程序,并且这些应用程序将编译为 native 代码,而无需使用 IL 数据。仅在特殊情况下您需要 IL 数据(如 XmlSerializer)。

更多信息请参见: <强> Microsoft .NET Native

关于.net - 是否可以通过垃圾收集创建 native 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945655/

相关文章:

c# - Json.NET 的 Pascal 大小写动态属性

c# - .NET CLR 是否真的针对当前处理器进行了优化

c++ - 防止继承类覆盖基类的虚函数

c++ - native /CLI C++ : How can I convert from vector<class1_native> to List<class1_cli>

C++CLI。 native 部分是否用纯 C++ 编写但在 CLI 中编译的速度与纯 native C++ 一样快?

c# - 注册表安全设置

c# - 如何检查 dll 是否为 .net 库 "The module was expected to contain an assembly manifest."

java - 使用 RSA 从 C# 到 Java 的 Base64 编码字符串到公钥

c# - 无法在 C++ CLI 中维护指针集合

c++ - 在 Visual C++ 2010 Windows 窗体项目中使用 HTML Tidy