簡體   English   中英

.NET / MONO交叉編譯的最佳實踐

[英]Best practices for .NET/MONO cross compiling

編寫可以在.NET(windows)和Mono(linux)上交叉編譯的代碼的最佳實踐是什么? 雖然我對.NET非常熟悉,但我對Mono及其所有問題都沒有經驗。 有沒有人看過關於這個的好博客文章或最佳實踐論文,我還沒有能夠挖掘出來? 我會堅持使用C#3.0級別的功能。

與我有關的事情首先是Interop,因為我需要調用一些本機代碼。 接下來是處理名稱空間的最佳方法,例如Mono.XXX。 我應該使用一堆#if嗎? 隔離每個平台程序集中的代碼?

任何有關建築和設計的建議都將不勝感激! 如果你在visual studio(任何版本)的Linux / Mono交叉編譯方面有任何經驗,我也會對此感興趣。

最大的問題是堅持Mono支持的API。 使用Mono中的Visual Studio Integration支持可以為此提供很多幫助,因為您可以在所有平台上始終以Mono為目標。

針對您的具體問題:

1)互操作 - 你需要堅持P / Invoke。 嘗試將其隔離到單獨的平台特定程序集中。 這導致2:

2)使用#if - 我會避免這種情況,並且更喜歡使用可擴展性模型。 Mono支持Managed Extensibility Framework ,它提供了一種在運行時“插入”特定於平台的代碼的好方法。

你應該被Prebuild感興趣:

Prebuild是一個跨平台的XML驅動的預構建工具,允許開發人員輕松生成主要IDE和.NET開發工具的項目文件,包括:Visual Studio .NET 2002,2003,2005,SharpDevelop,MonoDevelop,NAnt和Autotools。

Mono項目提供了一個包含可移植性指南的文檔。 這是一個非常好的起點。

我們使用MonoDevelop和Visual Studio進行開發,但關鍵是要保留一個好的NAnt構建腳本來一次性構建整個事物(Joel Spolsky的規則)。

IMO的主要觀點是非常清楚地表明該軟件必須是跨平台的,因此它不是“移植到linux / mono”,而是實際開發所需平台上的每次迭代。

我們不得不在開始時避免使用某些功能(現在使用Mono / .NET 5年用於商業產品),我們仍然堅持使用.NET Remoting,但在我看來,這在多平台開發中並不是什么大問題。

從近一年開始算上軟調試器也是一件好事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM