适用于 Windows 的桌面应用程序 - .NET Core 或 .NET Framework

Posted

技术标签:

【中文标题】适用于 Windows 的桌面应用程序 - .NET Core 或 .NET Framework【英文标题】:Desktop app for windows- .NET Core or .NET Framework 【发布时间】:2018-03-11 09:41:01 【问题描述】:

我有兴趣为 Windows 桌面开发一款桌面应用,它必须在 Windows 商店中。

在我看来,有两条路。使用 .NET Core (UWP) 进行开发,或使用 .NET Framework 进行开发。

目前我不关心非桌面设备。我确实关心只有 .NET Framework 的一个子集的痛苦,但我担心在不久的将来只会支持 UWP。

我应该选择什么路径,为什么?

【问题讨论】:

仍然不太正确 :) 即使是 UWP 应用程序也可以在 .NET 上运行,但在 .NET Core 上运行。而且.NET 标准平台 术语也不完全正确。 .NET Framework 就是您所说的,而与 .NET Framework 相比,确实有一个新的 .NET Standard 平台,用于创建跨 .NET 库 - 可以从 .NET Framework、.NET Core 和其他人。 【参考方案1】:

开发 UWP 应用需要使用 C#。

您的问题有点像:“我想在互联网上发布一些内容。我应该使用网站还是 html?”

此链接可能会有所帮助:https://docs.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp

【讨论】:

据我了解,使用 UWP 只是 C# 的一个子集。这不正确吗? 这不正确。 UWP 应用甚至可以用 Visual Basic、HTML + JS 或 Visual C++ 编写。 我已经编辑了我的问题,使其在语义上更正确。是的,两者都是 C#,但不是相同的框架。【参考方案2】:

首先,您将两种不同的东西混合在一起。 C# 是一种语言(如 C、C++、javascript 等),而 UWP 是一种平台(如 WinForms、WPF 和控制台)。 UWP 只能在 W10 设备上运行,可以用 C#、HTML + JS、Visual C++、Visual Basic...编写。

正如您所说的,UWP 只能使用完整 .NET Framework 中可用的 API 子集。那是因为它基于 .NET Core。今年晚些时候,UWP 应该会获得对 .NET Standard 2.0 的支持,它带来了许多以前在 .NET Core 和 .NET Standard 中不可用的 API,但是,这次升级将是仅适用于最低版本设置为 W10 Fall Creators Update(即将于 2017 年 9 月或 10 月推出)的 UWP 应用,因此如果您想支持旧版本的 W10,则无法在 UWP 中使用这些 API。

如果您希望您的应用进入 Windows 应用商店,最简单的方法是构建 UWP 应用。您还可以使用 Desktop Bridge 打包您的经典(WPF、WinForms 等)应用并将其上传到 Windows 应用商店。

您的选择应基于您应用的要求。如果我不需要使用那里不可用的 API,我会亲自使用 UWP。

【讨论】:

【参考方案3】:

在我看来,如果您不担心使用其他设备,那么我会选择标准 C#(只是我个人的看法),但如果您希望您的应用程序只能跨设备工作,我会选择 UWP。例如,如果为树莓派使用 Windows 10 版本,然后选择 UWP,这样您就可以简单地在 PI 和桌面应用程序之间进行集成,但对于桌面应用程序而言,我会坚持使用 C# 并节省太多的需求额外的学习。另外,如果您打算将应用程序放在 Windows 商店中,那么 UWP 是必须的。

【讨论】:

以上是关于适用于 Windows 的桌面应用程序 - .NET Core 或 .NET Framework的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Windows Phone 8.1(无 XAML)的最小应用程序:与桌面应用程序的差异

适用于 Windows 7 的 Delphi/Paradox 数据库桌面 DBD32.exe 设置

如何在容器上编辑 Docker 端口和参数? (使用适用于 Windows 的 Docker 桌面)[重复]

Flutter shared_preferences 插件是不是适用于桌面 Flutter 应用程序?

适用于桌面应用程序的 Azure NotificationHub(控制台应用程序)

在带有 Docker 桌面的 GitLab CI 管道上使用适用于 Windows 的 Gitlab-Runner