5

我从去年 10 月开始观看 Microsoft 构建会议,我注意到他们宣布,为了构建新的 Metro 风格应用程序,开发人员可以使用 C# 编写本机代码。这怎么可能?我只是好奇。C# 不是设计为(作为 CLI 标准的一部分)首先编译为中间字节码,然后在虚拟机上运行吗?在虚拟机上运行的东西怎么能称为“本机代码”?

4

2 回答 2

4

始终可以从托管代码调用本机代码。通常,任何与 Windows 交互的 .net 应用程序都会将控制权移交给本机组件。

从历史上看,要手动调用本机代码,我们会使用 PInvoke(平台调用)——它允许托管代码调用在 DLL 中实现的非托管函数。

现在的新功能是 Windows 运行时,基本上是一个增强的基于 COM 的 API。你可以在这里阅读它 - http://en.wikipedia.org/wiki/Windows_Runtime - 它只是让这个过程更容易/更少被偷听。

编辑- 要清楚,演示文稿不是 c# 可以编译为本机代码。这仍然是不可能的。他们吹捧 winrt 提供了一种新的(更干净的)机制,用于在 c# 中包含对本机代码的调用。

于 2012-06-23T06:53:30.680 回答
-1

CoreRT 项目是尝试本地编译 C# 的示例。

https://msdn.microsoft.com/en-us/magazine/mt830370.aspx

于 2019-05-29T18:09:31.787 回答