.NET 框架?还是.NET 核心?还是 .NET 标准?或者上面的none?

.NET Framework? Or .NET Core? Or .NET Standard? Or none of the above?

我有一些使用 .NET Framework 4.7.2 用 .NET 编写的私有库和程序,其中大部分是 WinForms,但有一些已经用 WPF 编写。

我有一些所有程序都使用的基础库,然后我通常每个程序有一个库,使用基础库并为这个程序提供业务逻辑,最后我有程序本身(可执行)使用该程序的基本库和一个业务逻辑库,用于构建 UI.

现在我也想将这些程序中的一两个移植到 Android 上的 运行,我想为此使用 Xamarin。

谷歌搜索后我明白我不能再使用 .NET Framework 作为基础,因为 .NET Framework 只是 Windows。但是我没有得到其他可以使用的东西?


.NET Core 似乎是一个候选者,但如果我理解正确的话,.NET Core 只是在不同平台上重用相同的源代码,而不是编译后的文件本身。 而微软在谈到跨平台能力时,总是只提到 Windows、Linux 和 OS X。 Android 呢?在这种情况下,"Linux" 涵盖了吗?

比方说,我必须移植我的三个基础库,业务逻辑库和程序。

我现在在 Android 和 Windows 桌面上有程序 运行ning,具有相同的基础库和业务逻辑库源代码。

我的所有其他程序(未移植)也使用这三个移植的基础库。

现在我想更改我移植的基础库之一中的代码。我现在不得不使用更改后的基础库重新编译任何程序,我不能只更改文件就完成了吗?


.NET Standard 似乎是另一种选择。据我所知,我可以使用 .NET Standard 创建一个基础库并从 .NET Core 或 .NET Framework 引用 file,对吗?但是我也可以从 Android 引用这个库吗(使用 Xamarin)?


为了让一个很长的问题变得简短...我必须做什么,创建一个基础库 file(例如一个用于访问 SQLite 数据库的库)并且能够在 Xamarin(对于 Android)和使用 .NET Framework 的其他组件的 Windows 中引用这个基础库文件。

这可能吗?

有几种不同的 .NET 实现,它们各有不同的用途。 .NET 框架是最初的实现,Windows 上只有 运行s。然后,Xamarin Inc. 创建了 Mono。它被构建为 .NET 框架的开源版本。对于 Android 和 iOS,Xamarin 使用 Mono 作为 .NET 运行time,因为它具有最小的尺寸和最轻的占用空间。

接下来,开源运动来了,微软创建了.NET core,它作为一个类似于Mono的开源跨平台实现。顺便说一句,.NET 核心二进制文件 运行 在任何 .NET 核心 运行 时间跨平台。并未实现整个框架,Microsoft 创建了 .NET Standard。它不是一个实现,它是任何 .NET 实现必须具备的二进制格式和 API 的规范。 (注意:我不完全确定它们实际创建和标准化的顺序)。

几乎所有 .NET 库都应针对 .NET 标准进行编程,因此您可以在这三种实现中的任何一种上使用它们。