2009-02-14 88 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文件可以直接複製到窗口並運行。

相關問題