【问题标题】:Can you develop Linux applications with Xamarin?您可以使用 Xamarin 开发 Linux 应用程序吗?
【发布时间】:2016-07-29 07:16:21
【问题描述】:

是否可以使用 Xamarin 开发和构建具有相同代码库的 Linux 应用程序?

在使用 Ubuntu 几年后,我现在的主要操作系统又是 Windows。但我可以切换到 Mac 并非不可能。

现在我对 Qt 有一点经验,而对 Xamarin 没有经验。 使用 Qt,您可以 Windows、Linux 和 Mac 上开发, Windows、Linux、Mac、iOS、Android、Windows Mobile,...他们对此非常清楚.

由于 Xamarin 现在是免费和开源的,而我在 Qt 方面仍然没有太多经验,因此我正在考虑尝试使用 Xamarin 代替 Qt 进行跨平台开发。

无法为 Linux 发布我的软件对我来说是个大问题。能够在 Linux 上进行开发会很好,但这是可选的。 但经过我所有的 Google 研究后,我只能找到信息和寻求支持以开发 on Linux 而不是 for Linux。

据我所知,这不应该只是 Mono 的问题。但据我所知,Xamarin > Mono,我无法在 Mono 中获得所有我可以在 Xamarin 中获得的东西。

我也不确定 Mono 将来会得到多大的支持。对我来说,对于微软来说,Xamarin 似乎比 Mono 本身重要得多。

我不确定这是否可能,因为 Xamarin 是基于 Mono 的,但微软是否可能会在某个时候决定不支持具有 .NET 兼容性的 Mono,就像 Xamarin 一样,甚至取消 Mono完全独立?

所以我正在为我可以依赖的所有桌面和移动平台寻找一个单一的框架,并且我想知道 Xamarin 和/或 Mono 和/或 Xamarin + Mono 是否可以替代 Qt 之前我去深入了解这些解决方案。

【问题讨论】:

    标签: c# .net linux xamarin mono


    【解决方案1】:

    以防万一其他人遇到此问题:情况已经改变。 Xamarin.Forms 3.0 支持 Gtk#(目前为预览版)。因此,启用了完整的 Linux GUI 支持。

    所以,Xamarin 现在涵盖:

    唯一希望得到的东西:JS/HTML5 Web App 目标平台,作为 Xamarin 的一部分 :)

    【讨论】:

    • 在 Xamarin 中希望得到的其他东西:能够从 js 实际调用和返回 c# 函数...
    • 我认为 Xamarin.Mac 也涵盖了 macOS?
    • 不确定是否可以以适当的方式覆盖您的愿望“JS/HTML5 Web App 目标平台”,因此内容仍然是干净的 HTML 并且可能由 webcrawler 和类似的东西处理.但是一个“以某种方式工作”的 JS/HTML5/WebAssembly UI 已经是一个好处。要获得真正的原生 HTML 体验,您应该查看 Blazor
    • GTK# 不受 Microsoft 支持,它是 Microsoft 不参与或不关心的仅社区努力。不能在 linux 上开发,只能在 windows 上构建后在 linux 上使用。 Xamarin.Forms UI 设计器在 Linux 上根本不可用。微软根本不关心这个。
    【解决方案2】:

    不,Xamarin 不适用于 Linux。这是几年前 Xamarin 团队制作的 conscious decision

    米格尔·德伊卡萨 2011-08-04 11:52:37 UTC

    我们在这里遇到了一个 QA 问题。

    支持 Linux 的问题是我们需要创建一个 自包含的 Mono 包装,用于我们发货以来的所有位 Linux 发行版在 Mono 方面略有不同。

    这也意味着,如果我们宣传“Linux”,我们需要对一打 由于不同的Linux发行版和不同的组合 每个发行版的不同版本。

    也许我们只支持一个发行版和一个 版本,更接近我们今天在 Windows/Mac 上要做的。

    澄清一下,Xamarin 产品系列在 Linux(Xamarin Studio、Xamarin.iOS 和 Xamarin.Android)上不可用,但 Xamarin Studio 的基础 MonoDevelop 和跨平台 .NET 运行时 Mono 绝对可用。

    您可以使用 MonoDevelop 构建桌面软件。 MonoDevelop 网站有大量的入门说明:

    【讨论】:

    • 谢谢。当然,当我只使用 Mono 时,我错过了什么会很有趣?看起来 Mono 也支持 Android 和 iOS。 Xamarin 的优势仅仅是它的 IDE(在这种情况下它是一个优势)和类似于 Xamarin 测试云之类的东西吗?
    • 或者是否可以将 Xamarin 用于它可以使用的所有内容,然后使用相同的代码库为 Linux 构建它?
    • @JuSchu Mono 不支持 iOS 和 Android。这就是 Xamarin 将 MonoTouch 重命名为 Xamarin.iOS 并将 Mono for Android 重命名为 Xamarin.Android 的原因。 .NET/Mono 的目的并不是让您使用一个代码库来支持所有平台。您可以共享代码,但不要梦想共享每一行代码。
    • @JuSchu 是的,业务逻辑可以在任何地方共享,尽管如果您已经查看了相关的构建会话,共享机制现在正在发生重大变化(从 PCL 到 .NET 标准库)。跨度>
    • 似乎 Miguel de Icaza 的团队决定 support Xamarin for linux :)
    【解决方案3】:

    似乎 Xamarin Forms 有可能在 linux 发行版上运行。在reddit thread Miguel de Icaza 中说:

    我们的一些团队成员实际上使用 Linux 进行开发。我们之所以 从未发布过 Linux 工具是因为我们收取了很多费用 金钱和人们理所当然地期望软件完全 支持的。我们已经足够让我们的 Mac 和 Windows 用户满意了,而且 添加未知数量的 Linux 发行版听起来很难 任务。现在我们正在开源 SDK,我不再觉得 如果某些东西在特定的 Linux 配置下不起作用,那就不好了, 我很乐意发布 Linux 版本。

    也就是说:Forms 是一个开源工具这一事实目前开启了这种可能性。

    【讨论】:

      【解决方案4】:

      是的,从 2018 年年中开始,可以使用“Xamarin.Forms”库开发面向 windows/mac/linux/android/ios 的跨平台 GUI 应用程序。基本上,您有一个来自跨平台代码(UI 和其他跨平台的东西)的共享库项目,每个平台有一个用于特定于平台的代码的项目(Xamarin.Forms 对每个平台都有一个后端实现。在 Linux 上,这是使用 GTK )。

      但是,使用 MonoDevelop,您只能开发/构建应用程序的跨平台项目和特定于 linux 的项目。您仍然需要使用 Visual Studio 或 Rider 为其他平台开发/构建。

      请看以下答案: https://stackoverflow.com/a/53317021/298005

      【讨论】:

        【解决方案5】:

        https://github.com/0xFireball/xamarin-android-linux

        正如 matthewrdev 所说,Xamarin.Studio、Xamarin.iOS 和 Xamarin.Android 不是“官方”支持的;但是,Xamarin.iOS 无论如何都使用虚拟仿真器(而且我认为 Xamarin.iOS 不会有解决方法在 Linux 上运行),但对于 Xamarin Studio(Linux 上的 MonoDevelop 或 Jetbrain's Riders(如何在 Linux 上运行它)链接中也没有提供官方支持)可以在 Linux 上作为 Xamarin.Studio 的替代版本运行,我分享的那个链接解释了如何在 linux 上安装 Xamarin.Android,所以对于 Xamarin.iOS,你需要迁移或双启动或某事,我希望有帮助!(我自己停止使用 Xamarin,但是,这个环境有助于在 linux 上开发 Xamarin!)

        【讨论】:

        • 您好,我维护您的链接;由于某些路径已更改,它已经损坏了一段时间,截至今天它已更新并已确认可以正常工作。
        • 我可以确认它仍然有效。唯一的问题是 libzip.so.4 错误。我一开始没有它,所以我必须通过以下方式安装它:sudo apt-get install libzip4
        【解决方案6】:

        GTK 被列为 Xamarin.Forms 支持的平台/后端之一,它允许构建适用于 Linux(以及通过相同 GTK 项目的 macOS 和 Windows)的应用程序。尽管自 2018/2019 年和 Xamarin.Forms 3.0 以来似乎没有太大的发展。尝试使用基本 UI 运行 2 个应用程序,并比较了 Windows/macOS 上的 GTK backedn(与 WPF 和 Xamarin.mac 后端相比),发现 GTK 不值得追求(基本场景失败)。

        您可以通过https://github.com/jsuarezruiz/forms-gtk-progress/blob/master/Status.md跟踪 GTK 进度

        【讨论】:

          【解决方案7】:

          在 Ubuntu 20.04 上,您可以使用 XSP4 运行 ASP.Net MVC 5 应用程序。打开一个控制台到您安装 MVC 应用程序的位置,所有文件夹、Global.asax、Web.config 等都在其中,然后运行“xsp4 --port 80”或您喜欢和可用的任何其他端口。 XSP4 是一个独立的 Web 服务器,不需要运行 Apache。 此外,对于 C# 开发人员,即使 MonoDevelop 不在 Ubuntu 20.04 中,我不知道为什么,您仍然可以安装它并调试您的 ASP.Net MVC 应用程序。您还可以使用 MonoDevelop 调试任何 WinForm 和控制台应用程序。您也可以使用单声道运行所有应用程序。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-06-28
            • 1970-01-01
            • 2021-11-11
            • 1970-01-01
            • 2013-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多