我知道在Windows中構建的二進制文件不需要爲使用Mono的Linux計算機重新編譯。它是否以其他方式工作?使用Mono在Linux機器上構建的二進制文件是否可以在僅使用.NET Framework的Windows上運行?在Windows上使用Mono構建的可執行文件
4
A
回答
5
是的 - 文件格式在Mono和.NET之間是可移植的。當然,這是禁止執行中的錯誤,這不是不可能的。
文件格式,甚至記錄在ECMA-335,分區2,第25條
顯然你需要的任何組件,您的應用程序引用。我相信,即使P/Invoke 可以可移植,如果你有相同的本地庫名稱暴露相同的功能。
2
不要忘了.NET二進制文件(exe或dll)包含與平臺無關的IL代碼。
因此,只要包含標準的可移植可執行文件(PE)頭信息,可以在Windows上運行使用Linux上的Mono構建的二進制文件。二進制內的所有其他代碼都是平臺無關的IL。
要在實際操作中看到這一點,請嘗試在Linux機器上安裝MonoDevelop,然後構建一個簡單的測試項目。
生成項目後,找到Debug目錄。它包含的exe文件可以直接複製到窗口並運行。
相關問題
- 1. 在Windows上構建Mono的類庫
- 2. 使用Mono爲Linux創建可執行文件?
- 3. Maven exec插件構建成功,即使可執行文件在Windows上失敗
- 4. .net可執行文件在xp上構建,不能在Windows 7上啓動 - werfault
- 5. 如何在Windows XP上使用Perl運行可執行文件?
- 6. Windows可執行文件結構
- 7. 使用Mono在Linux中識別可執行文件?
- 8. 無法運行使用gcc構建的可執行文件
- 9. 使用swift在iOS上運行預構建可執行文件3 Xcode 8.2.1
- 10. 從python源代碼構建一個Windows可執行文件
- 11. 在Mono下運行由F#3生成的可執行文件
- 12. 如何在Travis CI上構建MacOSX可執行文件?
- 13. 如何在Mac上構建SML/NJ可執行文件
- 14. 使用py2exe構建python代碼的可執行文件
- 15. 試圖在Linux/Ubuntu上使用Oracle庫構建靜態CGO可執行文件
- 16. 如何在Windows上創建單個文件的可執行文件python 2.7 x64?
- 17. 如何使用Qt構建靜態庫和可執行文件?
- 18. 使用maven構建可執行文件jar?
- 19. 使用Android NDK構建可執行文件
- 20. 從我的Ruby應用程序構建一個Windows可執行文件?
- 21. ruby中創建的文本文件正在構建爲可執行文件
- 22. NAnt和雙平臺構建 - 在Windows和Mono/Linux上構建的最佳方式
- 23. 簡化構建多個可執行文件的Android.mk文件
- 24. 如何在使用PyInstaller創建的可執行文件上使用xml.sax模塊?
- 25. 在Windows上執行映射文件
- 26. 在Mac上,Mono可以用來構建winsock2.h?
- 27. 用GCC構建最小化的獨立可執行文件
- 28. 如何用CruiseControl.Net構建忽略可執行文件的輸出?
- 29. 在Windows Vista上覆蓋C:\ Program \ MyProg中的可執行文件
- 30. 使用VS2010構建的可執行文件在System32中找不到DLL