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

5 linux cross-platform xamarin

我使用Fedora 27作为操作系统,我想知道是否可以让Xamarin工具集在其上运行,以使用monodevelop,VS Code或Rider等IDE创建跨平台应用程序。

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

Gab*_*ier 9

是的,截至 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 下的项目结构图:

项目结构

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

以及结果的图片:

结果

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

  • 我无法将 GTK 添加到我的跨平台项目中。在 Nuget 管理器中,可用的 GTK 版本均高于 3.0.+。使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version= 恢复包'Xamarin.Forms.Platform.GTK 4.7.0.968' v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架 '.NETStandard,Version=v2.0'。该包可能与您的项目不完全兼容。` (2认同)

Nic*_*ers 1

是的,您可以,而且我不确定它在 Fedora 上的工作效果如何,但看起来 Linux 上的 GTK 后端的开发仍在进行中。要了解更多信息,这里有一个 Github 存储库,其中显示了它的进展情况以及您可以如何亲自尝试。