C#中的本机代码?

时间:2012-06-23 06:36:21

标签: c# virtual-machine bytecode native-code managed-code

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

2 个答案:

答案 0 :(得分:3)

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

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

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

编辑 - 很明显,演示文稿并不是说c#可以编译为本机代码。这仍然是不可能的。他们正在宣传winrt,因为它提供了一种新的(更清洁)机制,可以在c#中包含对本机代码的调用。

答案 1 :(得分:-1)

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

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