首页 > 解决方案 > .NET 框架?还是 .NET 核心?还是 .NET 标准?或者以上都不是?

问题描述

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

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

现在我想移植其中的一两个程序以在 Android 上运行,并且我想为此使用 Xamarin。

谷歌搜索后,我了解到我不能再使用 .NET Framework 作为基础,因为 .NET Framework 仅适用于 Windows。但是我没有得到什么可以使用?


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

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

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

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

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


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


让一个长问题简短......我必须做什么,创建一个基本库文件(例如一个用于访问 SQLite 数据库的文件)并能够在 Xamarin(适用于 Android)和 Windows 中引用这个基本库文件来自使用 .NET Framework 的其他组件。

这甚至可能吗?

标签: .netxamarin.net-core.net-standard

解决方案


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

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

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


推荐阅读