如何将Mono GTK#应用程序移植到其他平台

本文关键字:其他 平台 应用程序 Mono GTK# | 更新日期: 2023-09-27 18:00:54

我正在开发一个用C#编写的Mono GTK#桌面应用程序。我在Mac(OS X v10.6.7(上使用MonoDevelop IDE(v2.4.2(开发了我的应用程序。我的应用软件依赖于GTK#库(显然(以及Mono.WebServer2库来运行本地ASP.NET服务器。

我已经在自己的Mac和其他Mac上测试了我的应用程序。一切都很顺利。现在,我有兴趣将我的应用程序移植到其他平台(特别是Windows 7和Ubuntu v11.04(。我一直在玩mkbundle命令,但我没有为Mac OS X以外的其他平台创建工作包。

由于我尝试了许多不同的解决方案,但都没有成功,我想听听Mono开发人员的意见。如何将应用程序移植到其他平台?

我使用Visual Studio开发C#已经有很长一段时间了,但我对Mono开发环境并不熟悉。因此,我非常感谢你的详细解释。

非常感谢!

如何将Mono GTK#应用程序移植到其他平台

这听起来并不是在谈论移植,而是打包。MonoDevelop的"项目/创建包"功能可以创建简单的二进制包(zip等(或源包(源代码加makefile(,但这些不是分发给大多数最终用户的理想形式。需要做一些额外的工作来为每个平台制作一个抛光的安装程序。

mkbundle将Mono运行时绑定到您的应用程序中,因此它会创建100%特定于平台的二进制文件。

对于Mac来说,分发应用程序的通常方式是作为应用程序捆绑包。MonoDevelop并没有为GTK#项目实现自动化,但我在博客上解释了如何做到这一点。

对于Ubuntu,您可以分发一个zip二进制文件,并要求用户安装Mono、GTK#和xsp。如果创建.deb包,则可以将这些依赖项嵌入到包清单中。MonoDevelop没有任何工具来创建deb/rm-linux包,我自己也不熟悉这个过程。

对于Windows,您可以提供一个二进制文件的zip,并要求用户安装.NET和GTK#For.NET。您也可以创建一个msi安装程序,并让它检查这些先决条件。

听起来您已经解决了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版本进行相同的检测。你可以在这里获得GTK#for Windows。

我没有很好的说明来做这件事,但Banshee和MonoDevelop项目都做得很好。我会看看这些项目,因为它们会向你展示需要做什么。

https://github.com/mono/monodevelop

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

编辑:

我最近才意识到GTK#安装程序的代码在GitHub上。

Monosdevelop中还有打包项目。你可以使用它们。

我怀疑mkbundle是否能在Linux之外运行良好。

另一个选项是在其他平台上打开你的项目(你可以使用Monodedevelop(并构建项目,并使用其他应用程序来构建包。

我最近刚刚创建了用MonoDevelop编写的.Net项目的deb包。在MonoDevelop中,我创建了一个包含源代码和makefiles的包(makefiles也是由MonoDevelopment生成的(,然后我使用了本指南>

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

创建deb包。依赖项是mono运行时和gtk-sharp2。