我可以在Linux上构建和编译跨平台Xamarin应用程序吗?

时间:2018-02-08 19:20:26

标签: linux xamarin cross-platform

我正在使用Fedora 27作为我的操作系统,我想知道我是否可以使用Xamarin工具集来创建具有像monodevelop,VS Code或Rider这样的IDE的跨平台应用程序。

我听说Xamarin获取了适用于Linux的Xamarin.Forms的新模板,但是我找不到任何关于它的最新开发新闻。

2 个答案:

答案 0 :(得分:3)

是的,截至2018年中,在Linux上的MonoDevelop下开发Xamarin.Forms应用程序在某种程度上是可能的。我成功做到了。

基本上,您需要至少拥有两件事:

  • 一个共享库项目,包含所有跨平台的Xamarin.Forms代码和Xaml文件。由于某种原因,在Linux上,必须使用.NET Core工具链而不是Mono工具链来编译该库项目(否则,稍后在运行时会出现一些GTK问题)。目标框架是.NET Standard 1.0或.NET Standard 2.0,主要依赖项是NuGet包“ Xamarin.Forms”。
  • Linux的Mono / GTK#特定于平台的项目,包含所有特定于平台的代码:初始化GTK和Xamarin.Forms.Platform.GTK后端,然后启动Xamarin.Forms代码。依赖项包括NuGet包“ Xamarin.Forms.Platform.GTK”,对Linux发行版本地安装的GTK#(gtk-sharp,atk-sharp等)的引用,以及对共享库项目的引用。 。请注意,仅支持GTK2,不支持GTK3。

可以使用MonoDevelop,Visual Studio或JetBrains Rider开发共享库项目。请注意,使用MonoDevelop,没有XAML设计器...因此,使用Windows上的Visual Studio可以更轻松地进行设计。

特定于平台的项目可以使用Linux上的MonoDevelop或Rider开发。

这是MonoDevelop下的项目结构图:

ProjectStructure

  • 有一个“ HelloWorldXamarin”库项目。它使用针对.NET Standard 1.0的.NET Core工具链,并依赖于NuGet包“ Xamarin.Forms”
  • 有一个“ HelloWorldXamarin_Linux”项目。它使用针对Linux的Mono / GTK#的Mono工具链,并具有对GKT#和HelloWorldXamarin库的依赖关系,以及对NuGet包“ Xamarin.Forms.Platform.GTK”的依赖关系。您可以在右侧看到特定于平台的代码。

以及结果图片:

Result

因此,您现在可以开发适用于Windows,Mac,Linux,Android,iOS ...的跨平台Xamarin.Forms GUI应用程序。

答案 1 :(得分:1)

是的,你可以以及它在Fedora上的效果如何,我不确定,但看起来Linux上的GTK后端的开发仍在进行中。有关更多信息,有一个Github回购here,它显示了它的距离以及如何自己尝试。