2011-02-01 111 views
13

好吧,我正在編寫一個我想要跨平臺的應用程序。直到最近,我一直試圖在Silverlight中使用C#執行此操作,因爲它也可以在OS X上運行,但除了對Silverlight不熟悉之外,我在C#中生鏽,我頭痛後頭痛。其中大部分原因是與應用程序一起運行在瀏覽器中的限制,從我的開發服務器直接從文件運行時發生的問題與以下情況不同://等。使用Mono將C#.NET應用程序移植到OS X?

我想而完全放棄了整個OS X的支持思想,而不是完全重寫OS X的應用程序,特別是因爲我完全沒有寫它的經驗。我希望能夠做的是用Visual Studio for Windows在C#.NET中編寫常規應用程序,然後使用Mono輕鬆將其移植到OS X.

使用Mono將.NET應用程序帶到OS X有多困難?我的應用程序非常簡單,沒有任何異常情況會隨着表單或任何東西進行,所以我不得不假設它會在Mono的WinForms實現中得到支持。

有沒有什麼好的資源在那裏如何使用莫諾移植應用程序?或者,也許我錯過了整個觀點,它只是讓你在OS X上運行.NET應用程序,而且我不需要爲移植而煩惱?

原諒我對這個問題的完全無知,我只是開始考慮像在10分鐘後跑到另一個令人討厭的限制Silverlight中去這條路線。

我會是第一個承認,我不知道我的腦袋從我的有關此主題的屁股,所以,請溫柔.. :)

+1

這可能有所幫助:http://www.mono-project.com/MoMA – Nick 2011-02-01 11:51:58

+0

如果你想編寫一個合適的Cocoa接口的程序,你也可以看看MonoMac http://www.mono-project。 com/MonoMac – Luke 2011-02-01 12:01:34

回答

1

有幾件事情,你應該記住。

  1. 你必須端口的平臺depedendent UI代碼
  2. 不使用平臺dependentent OS電話(Win32 API的)
  3. 不使用「外來的」庫(比如工作流程,可悲的是任何使用ef)
  4. 一般來說:抽象依賴於這些代碼,所以你可以很容易地將它們替換爲單一特定的庫。 (一個可建議的模式將是MVVM)。

有一個名爲MoMA的工具,可以幫助你解決所有這些問題。然而,用一粒鹽來取得結果。無論如何,只需嘗試一下。

+0

最後兩句在大多數情況下無效:)除非您在Mono上運行應用程序,否則您永遠不會知道某些問題。 MoMA是一個不錯的工具,但它不是銀彈。 – 2011-02-01 11:57:15

1

Mono項目擁有一批致力於如何將應用程序移植頁面,

http://mono-project.com/Guidelines:Application_Portability

然而,這是遠遠不夠的您的應用程序可以在許多方面是獨一無二的。

嘗試移植它,並在必要時向Mono球員報告問題。此外,如果你的公司工作,從現代藝術博物館考慮爲您可能會感興趣的的MonoMac其他的答案中提到Mono的商業支持服務,

http://mono-project.com/Support

2

除了已經說過的話,考慮到Mono支持完整.NET功能的一個子集,我可能更願意在Mono上開發,然後測試微軟的運行時間,如果目標是在這兩個上運行。否則,您將冒着不小心使用Mono中無法使用的某些功能的風險,並且在您開始進行跨平臺構建和測試時必須將大量代碼扔出窗口。