2009-02-14 86 views
4

我知道在Windows中构建的二进制文件不需要为使用Mono的Linux计算机重新编译。它是否以其他方式工作?使用Mono在Linux机器上构建的二进制文件是否可以在仅使用.NET Framework的Windows上运行?在Windows上使用Mono构建的可执行文件

回答

5

是的 - 文件格式在Mono和.NET之间是可移植的。当然,这是禁止执行中的错误,这不是不可能的。

文件格式,甚至记录在ECMA-335,分区2,第25条

显然你需要的任何组件,您的应用程序引用。我相信,即使P/Invoke 可以可移植,如果你有相同的本地库名称暴露相同的功能。

2

不要忘了.NET二进制文件(exe或dll)包含与平台无关的IL代码。

因此,只要包含标准的可移植可执行文件(PE)头信息,可以在Windows上运行使用Linux上的Mono构建的二进制文件。二进制内的所有其他代码都是平台无关的IL。

要在实际操作中看到这一点,请尝试在Linux机器上安装MonoDevelop,然后构建一个简单的测试项目。

生成项目后,找到Debug目录。它包含的exe文件可以直接复制到窗口并运行。

相关问题