2011-07-03 124 views
2

我正在使用C#編寫的Mono GTK#桌面應用程序。我在Mac(OS X v10.6.7)上使用MonoDevelop IDE(v2.4.2)開發了我的應用程序。我的應用程序依賴於GTK#庫(顯然)以及用於運行本地ASP.NET服務器的Mono.WebServer2庫。如何將Mono GTK#應用程序移植到其他平臺?

我已經在我自己的Mac以及其他Mac上測試了我的應用程序。一切都很好。現在,我有興趣將我的應用程序移植到其他平臺(特別是Windows 7和Ubuntu v11.04)。我一直玩弄mkbundle命令,但我沒有任何運氣爲Mac OS X以外的其他平臺創建工作包。

由於我嘗試了許多不同的解決方案,但沒有成功,所以我想聽到那裏的單聲道開發人員。你如何將你的應用移植到其他平臺上?

我一直在使用Visual Studio開發C#很長一段時間,但我是Mono開發環境的新手。因此,我非常感謝一個詳細的解釋。

非常感謝!

回答

5

它聽起來不像你說的移植,而是包裝。 MonoDevelop的「項目/創建包」功能可以創建簡單的二進制包(zip文件等)或源包(source和makefiles),但這些並不是向大多數最終用戶分發的理想形式。一些額外的工作是需要爲每個平臺做一個拋光安裝程序。

mkbundle將Mono運行時綁定到您的應用程序中,因此它會創建100%平臺特定的二進制文件。

對於Mac,分發應用程序的常用方式是作爲應用程序包。 MonoDevelop沒有將GTK#項目的這個自動化,但我解釋瞭如何去做on my blog

對於Ubuntu,您可以分發二進制文件並要求用戶安裝Mono,GTK#和xsp。如果您創建.deb包,則可以將這些相關性嵌入到包清單中。 MonoDevelop沒有任何用於創建deb/rpm linux軟件包的工具,而且我並不熟悉這個過程。

對於Windows,您可以提供二進制文件的壓縮包,並要求您的用戶安裝.NET和GTK#for .NET。您也可以創建一個msi安裝程序並讓它檢查這些先決條件。

+0

感謝您的博客post.It真的有幫助。我有一個GTK#應用程序,我需要爲Mac創建應用程序包。我需要在此包中包含Mono Runtime,以便用戶不需要單獨安裝Mono 。這可能嗎? – techno

+0

這很可能但很難,我不知道這些步驟,對不起! –

0

Monodevelop還有一些包裝項目。你可以使用它們。

我懷疑mkbundle除了Linux以外還能工作得很好。

另一種在其他平臺上打開項目的選項(可以使用Monodevelop)並構建項目並使用其他應用程序構建包。

+0

你對'mkbundle'可能是正確的。我嘗試了你在另一個平臺上構建我的應用的建議。我在Windows上做了這個,但由於缺少'Mono.WebServer2'庫,失敗了。如何直接從MonoDevelop打包和我的應用程序? –

+0

您可以從Mac複製該程序集。對於Project菜單中的包,有一個菜單「創建包」,看看。 – Sharique

2

這聽起來像你已經解決了Mac打包問題。

在Ubuntu上,您需要創建一個包含您的應用的.deb包,並要求其他包作爲依賴項(Mono,Mono.WebServer2,GTK#,GTK +等)。通過下面的鏈接應該讓你開始構建Ubuntu的軟件包:

https://wiki.ubuntu.com/UbuntuDevelopment

對於Windows,你可能已經知道如何,如果你有.NET經驗建立一個安裝程序。我會說,你會想在.NET而不是Mono上運行你的應用程序。這就是Mono團隊自己做的事情(以MonoDevelop爲例)。引入Mono.WebServer2等Mono特定位作爲應用程序的一部分。

這裏最大的問題是GTK#需要安裝GTK + C庫。可能最簡單的方法是檢測GTK#是否作爲安裝程序的一部分安裝,並要求用戶在需要時安裝GTK#。你將不得不爲你所需要的.NET版本進行相同的檢測。您可以獲得Windows版的GTK#here

我沒有很好的指示,但是Banshee和MonoDevelop項目都做得很好。我會看看那些項目,因爲它們會告訴你究竟需要做什麼。

https://github.com/mono/monodevelop

http://git.gnome.org/browse/banshee

編輯:

我最近才意識到,對於GTK#安裝程序的代碼是在GitHub here

相關問題