可执行文件在Windows上以Mono内置

时间:2009-02-14 20:01:57

标签: mono compatibility

我知道在Windows中构建的二进制文件不需要为使用Mono的Linux机器重新编译。它是否相反?在Linux机器上使用Mono构建的二进制文件是否可以在仅使用.NET Framework的Windows上运行?

2 个答案:

答案 0 :(得分:5)

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

ECMA-335,分区2,第25节中的文件格式甚至是记录

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

答案 1 :(得分:2)

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

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

要了解实际操作方法,请尝试在Linux机器上安装MonoDevelop,然后构建一个简单的测试项目。

构建项目后,找到Debug目录。它包含可以直接复制到Windows并运行的exe文件。