3

C# で記述された Mono GTK# デスクトップ アプリに取り組んでいます。Mac (OS X v10.6.7) で MonoDevelop IDE (v2.4.2) を使用してアプリを開発しました。Mono.WebServer2私のアプリは、ローカル ASP.NET サーバーを実行するためのライブラリだけでなく、GTK# ライブラリ (明らかに) にも依存しています。

自分の Mac と他の Mac でアプリをテストしました。すべてがうまくいっています。現在、アプリを他のプラットフォーム (具体的には、Windows 7 と Ubuntu v11.04) に移植することに関心があります。このコマンドをいじってみましたmkbundleが、Mac OS X 以外のプラットフォーム用の機能するバンドルを作成することはできませんでした。

さまざまなソリューションを試してみましたがうまくいきませんでしたので、Mono 開発者の意見を聞きたいと思います。アプリを他のプラットフォームに移植するにはどうしますか?

Visual Studio を使用して長い間 C# を開発してきましたが、Mono 開発環境は初めてです。したがって、詳細な説明をいただければ幸いです。

どうもありがとうございました!

4

4 に答える 4

6

移植について話しているのではなく、パッケージングについて話しているようには聞こえません。MonoDevelop の「プロジェクト/パッケージの作成」機能は、単純なバイナリ パッケージ (zip など) またはソース パッケージ (ソースとメイクファイル) を作成できますが、これらはほとんどのエンド ユーザーに配布する理想的な形式ではありません。各プラットフォーム用の洗練されたインストーラーを作成するには、いくつかの追加作業が必要です。

mkbundle は Mono ランタイムをアプリにバンドルするため、100% プラットフォーム固有のバイナリが作成されます。

Mac の場合、アプリを配布する通常の方法はアプリ バンドルです。MonoDevelop は GTK# プロジェクトではこれを自動化しませんが、ブログでその方法を説明しました。

Ubuntu の場合、バイナリの zip を配布し、ユーザーが Mono、GTK#、および xsp をインストールすることを要求できます。.deb パッケージを作成すると、これらの依存関係をパッケージ マニフェストに埋め込むことができます。MonoDevelop には deb/rpm Linux パッケージを作成するためのツールがなく、私自身もそのプロセスに精通していません。

Windows の場合、バイナリの zip を提供し、ユーザーが .NET と GTK# for .NET をインストールすることを要求できます。msi インストーラーを作成して、これらの前提条件を確認することもできます。

于 2011-07-05T11:41:16.840 に答える
2

Mac のパッケージングの問題はすでに解決されているようですね。

Ubuntu では、アプリを含み、依存関係として他のパッケージ (Mono、Mono.WebServer2、GTK#、GTK+ など) を必要とする .deb パッケージを作成する必要があります。次のリンクから、Ubuntu パッケージのビルドを開始できます。

https://wiki.ubuntu.com/UbuntuDevelopment

Windows の場合、.NET の経験があれば、インストーラーの作成方法を既に知っているでしょう。Mono ではなく .NET 上でアプリを実行したいと思います。これは、Mono チーム自身が行っていることです (例として MonoDevelop の場合)。アプリケーションの一部として、Mono.WebServer2 のような Mono 固有のビットを取り込みます。

ここでの最大の問題は、GTK# には GTK+ C ライブラリをインストールする必要があることです。おそらく最も簡単な方法は、GTK# がインストーラーの一部としてインストールされているかどうかを検出し、必要に応じて GTK# をインストールするようにユーザーに依頼することです。とにかく、必要な .NET バージョンに対して同じ検出を行う必要があります。ここで Windows 用の GTK# を入手できます。

これを行うための優れた指示はありませんが、Banshee プロジェクトと MonoDevelop プロジェクトの両方がうまく機能します。それらのプロジェクトは、何をする必要があるかを正確に示してくれるので、それらのプロジェクトを見ていきます。

https://github.com/mono/monodevelop

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

編集:

最近、GTK# インストーラーのコードが GitHub のこちらにあることに気付きました。

于 2011-07-05T16:51:04.253 に答える
0

Monodevelop で利用できるパッケージ プロジェクトもあります。それらを使用できます。

mkbundle が Linux 以外でうまく動作するかどうかは疑問です。

プロジェクトを他のプラットフォーム (Monodevelop を使用できます) で開き、プロジェクトをビルドし、他のアプリを使用してパッケージをビルドする別のオプション。

于 2011-07-03T10:51:31.377 に答える
0

最近、MonoDevelop で記述された自分の .Net プロジェクトの deb パッケージを作成しました。MonoDevelop から、ソースとメイクファイル (MonoDevelop によって生成されたメイクファイル) を含むパッケージを作成し、このガイドを使用しました>

http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html

debパッケージを作成します。依存関係は mono-runtime と gtk-sharp2 でした。

于 2011-07-20T08:37:02.787 に答える