首页 > 解决方案 > 如何判断 .NET 中的哪个 API 是跨平台的?

问题描述

介绍有点长,关键问题固定在底部。

所以,几年来我几乎一直在用 C# 编程。我对此感到非常舒服和高兴。然而,我从一开始就一直在努力解决的问题是对 .NET 平台的深刻理解。特别是我不知道我可以使用哪些库,这样我的应用程序就不会仅限于 Windows。当我大约 4 岁开始时,我只被告知我的应用程序应该针对 .NET Framework 4.5,因为其他框架存在“一些问题”。显然,告诉我使用 .NET Framework 4.5 的人比我更困惑,因为他虽然不能将新版本的 C# 与旧版本的框架一起使用。从那时起,很少有新版本的框架出现,.NET Core,现在只有 .NET。现在事实证明我真的可以 t 在针对旧框架时使用新的 C# 版本。然而,这不是最重要的问题......我的主要问题是告诉哪些 API 在所有平台上真正可用。我记得读过新闻说 WPF 现在可以在 .NET core 上使用,所以我开始弄乱它,只是过了一段时间才发现它仍然是仅限 Windows 的。更令人困惑的是,您还拥有 .NET Standard、平台扩展、单声道和其他一些误导性的好东西。经过无数小时的 C# 编程后,现在我坐在这里,我无法肯定地回答像这样的简单问题。所以我开始弄乱它只是为了在一段时间后发现它仍然是仅限 Windows 的。更令人困惑的是,您还拥有 .NET Standard、平台扩展、单声道和其他一些误导性的好东西。经过无数小时的 C# 编程后,现在我坐在这里,我无法肯定地回答像这样的简单问题。所以我开始弄乱它只是为了在一段时间后发现它仍然是仅限 Windows 的。更令人困惑的是,您还拥有 .NET Standard、平台扩展、单声道和其他一些误导性的好东西。经过无数小时的 C# 编程后,现在我坐在这里,我无法肯定地回答像这样的简单问题。

这个类在所有平台上都可用吗?

例如,我对使用Dispatcher类感兴趣。

在底部,在“适用于”下,我看到:

.NET 5.0、.NET Core 3.0、3.1 ...

所以这一定意味着当我使用它为 Core 3.0 编译我的应用程序时,它会随处可用吗?

但在顶部我看到:

命名空间:System.Windows.Threading

程序集:WindowsBase.dll

“Windows”是否意味着这仅在窗口上可用?

我还在Window类下看到了相同的“适用于”部分。但是这个类是PresentationFramework.dllWPF 的一部分,这意味着我只能在 Windows 操作系统中使用它,对吧?

另一件事让我更加困惑 - Image类“适用于”指定 .Net 平台扩展。我虽然 .NET Core 上的 WPF 仅适用于平台扩展。那么,为什么 Image 文档指定了 Platform Extensions,而 Window 文档却没有呢?

同样在System.Drawing的“备注”中有一个注释,基本上说你不应该使用该命名空间中的类(太好了,现在我可能需要检查我使用的所有命名空间的备注......)

所以(这不是另一个问题,而是改写)给定 .NET 的 X 类,我怎么知道它在哪里可用?

从现在开始,我什至开始害怕使用System命名空间......

更新

  1. 当我在评论中看到一些混乱时,我想澄清一下。我所说的“跨平台”是指可以使用 .NET 运行时的所有主要操作系统。我不考虑 Xamarin 跨平台。
  2. 尽管 class likeDispatcher可能主要与 WPF 相关联,但它不是特定于表示的东西,我发现它在不同于 GUI 操作的场景中很有用。

标签: c#.net

解决方案


推荐阅读