WPF 应用程序可以在带有 .Net Core 3 的 Linux 或 Mac 中运行吗?

Posted

技术标签:

【中文标题】WPF 应用程序可以在带有 .Net Core 3 的 Linux 或 Mac 中运行吗?【英文标题】:Can WPF applications be run in Linux or Mac with .Net Core 3? 【发布时间】:2021-10-28 15:00:46 【问题描述】:

微软宣布 .NET Core 3 带有 WPF 和 Windows 窗体。那么我可以使用 .NET Core 3 创建适用于 Linux 或 Mac 的桌面应用程序吗?

【问题讨论】:

根据他们的更改,他们声称已为 .net 核心包添加了可执行文件,因此看起来您可能能够在 Linux 上运行桌面应用程序,但就像任何新技术一样,我将采用它在这一点上还有一点点盐,因为它只处于测试阶段。 不,但类似的东西正在开发中而不是 MS github.com/AvaloniaUI/Avalonia 【参考方案1】:

不,他们已经明确表示这些只是窗户。在其中一次 .NET Core 3.0 讨论中,他们还澄清说他们不打算将来使这些功能跨平台,因为整个概念源自 Windows 特定功能。他们谈到了为跨平台应用程序思考一个全新的想法,这并不容易。

来源:https://youtu.be/HNLZQeu05BY

更新

新发布的 .NET 5 现在旨在避免所有这些混淆,不再将其称为“.NET Core”。

更新 2

对于 blazor 客户端(2020 年 5 月发布),有一个使用 webview 的跨平台应用程序的新实验项目正在进行中。

来源: https://blog.stevensanderson.com/2019/11/01/exploring-lighter-alternatives-to-electron-for-hosting-a-blazor-desktop-app/

【讨论】:

这非常令人困惑,因为 dotnet 核心意味着跨平台,不是吗?如果它再次变得依赖于平台,那么这条路线有什么价值呢?也与比赛(Java-Land)有关。有什么想法吗? :-) @christianparpart 起初我认为 WPF 正在成为跨平台的原因相同。然而,虽然 .NET Core 最初主要是作为一个跨平台概念,但现在由于它是一个重新发明,它的开发也比 Framework 干净得多。这种方法并没有真正将 .NET Core 带入该路线。只是依赖于 Windows 的东西现在是“依赖于更清洁的 Windows”。他们仍在朝着跨平台桌面的方向努力。这需要时间,但仍然是一个跨平台的方向。 .NET Core 仍然是跨平台的,但 Windows 桌面支持不是 .NET Core 的一部分,它被视为使用 .NET Core 的附加 SDK。我想迟早会有人分叉它并开始在跨平台上工作,需求巨大,像 Avalonia 这样的单独工作没有人力(我在某处读到,最初的 WPF 工作涉及近 1000 名全职开发人员) . @McGuireV10 是的。对 Windows 桌面的支持将作为一组“Windows 桌面包”添加。它包含 UWP、WPF 和 Windows 窗体。这只适用于Windows。 link【参考方案2】:

WPF 或 Winforms 不支持。但是您仍然可以在 Linux 上使用 .NET Core 开发桌面应用程序,使用 GtkSharp 或 Avalonia 等其他库

【讨论】:

这实际上似乎使用标准而不是核心。但可以说它们是相同的。其他一些类似的选项是 blazor 的扩展 很有趣,我不知道。但是 Avalonia 是一个 Visual Studio 扩展,Visual Studio 不能安装在 Linux 上,可以吗? 只有视觉设计师在 vs 扩展中。您可以在任何您喜欢的编辑器/IDE 中编写代码。 酷,是的,我刚刚在 Linux Fedora 上安装了 Avalonia。我正在按照标准模板运行第一个 MVVM 应用程序。【参考方案3】:

嗯,这个名字本身就是 Windows Presentation Foundation。所以它主要是基于窗口的。

但值得注意的是,.NET MAUI 将与 .NET 6 一起提供的新 UI 框架是跨平台的,具有单代码库、单项目结构。

在撰写本文时目前处于预览状态,将于 2021 年 11 月发货。这是roadmap。

【讨论】:

【参考方案4】:

虽然它不是 linux 上的原生 dotnet core,但它可能会有所帮助 - 使用 wine。

我发现一个非常有用的评论in the discussion here,更多细节here

也就是说,可以在wine下使用windows版本的dotnet core。

我还没有尝试过,但从我提到的文章中我可以说它看起来不错并且可能是一个选择。

【讨论】:

据我所知,如果你使用Wine,你甚至不仅限于.NET Core,你也可以使用.NET Framework应用程序:appdb.winehq.org/…

以上是关于WPF 应用程序可以在带有 .Net Core 3 的 Linux 或 Mac 中运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法在通用 Windows 或 WPF 应用程序中引用 .NET Core 类库

.NET Core 3 使用 WinUI

.Net Core 3.0 关于Windows Form和WPF的全面支持

WPF .NET Core 3.1 应用程序发布单个文件(发布)失败

NET Core 3.1 WinForms Designer 与 WPF 用户控件不兼容

适用于任何平台的 WPF .net Core 3.1 应用程序部署工具?