3

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

4

2 回答 2

4

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

该文件格式甚至记录ECMA-335分区 2 第 25 节中。

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

于 2009-02-14T20:12:08.987 回答
2

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

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

如果想以实际的方式看到这一点,请尝试在 Linux 机器上安装MonoDevelop ,然后构建一个简单的测试项目。

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

于 2009-02-14T20:10:00.643 回答