c# - 如何判断 .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.dll
WPF 的一部分,这意味着我只能在 Windows 操作系统中使用它,对吧?
另一件事让我更加困惑 - Image类“适用于”指定 .Net 平台扩展。我虽然 .NET Core 上的 WPF 仅适用于平台扩展。那么,为什么 Image 文档指定了 Platform Extensions,而 Window 文档却没有呢?
同样在System.Drawing的“备注”中有一个注释,基本上说你不应该使用该命名空间中的类(太好了,现在我可能需要检查我使用的所有命名空间的备注......)
所以(这不是另一个问题,而是改写)给定 .NET 的 X 类,我怎么知道它在哪里可用?
从现在开始,我什至开始害怕使用System
命名空间......
更新
- 当我在评论中看到一些混乱时,我想澄清一下。我所说的“跨平台”是指可以使用 .NET 运行时的所有主要操作系统。我不考虑 Xamarin 跨平台。
- 尽管 class like
Dispatcher
可能主要与 WPF 相关联,但它不是特定于表示的东西,我发现它在不同于 GUI 操作的场景中很有用。
解决方案
推荐阅读
- node.js - 使用 npm 安装 express-generator 时出错
- javascript - 仅在激活选项卡时运行事件
- android - 从客户端发送到服务器时文件损坏
- python - django 中一个 CreateView 中的多个 ModelForms
- python - 我应该如何加快pickle.dump()的写入速度
- python - 努力布局我的 Tkinter 应用程序
- c++ - 代码覆盖率 (Lcov) 错误地显示 100% 覆盖率
- wsdl - soapui SOAP 请求为空
- python - Python 安装 - 用户与程序文件夹
- json - Xcode:使用额外的 JSON 和图像内容构建二进制文件