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