.NET 类库.NET class libraries

有三种类型的类库可供使用:

  • 平台特定的类库可访问给定平台(例如,.NET Framework、Xamarin、iOS)中的所有 API,但只有面向该平台的应用和库可使用该类库。
  • 可移植类库可访问 API 的子集,并且可供面向多个平台的应用和库使用。
  • .NET Standard 类库将平台专用库概念和可移植库概念合并到一个模型中,以同时获取两方面的优势。

平台特定的类库绑定到单个 .NET 实现(例如,Windows 上的 .NET Framework),因此它可以在已知的执行环境上接收重要的依赖项。此类环境会公开一组已知 API(.NET 和 OS API),维护并公开预期状态(例如,Windows 注册表)。

创建平台特定的库的开发人员可充分利用基础平台。该库只会在给定平台上运行,因此不需要平台检查和其他形式的条件代码(针对多个平台取模单个源代码)。

可移植库支持多个 .NET 实现。该库仍可在已知执行环境上接收依赖项,不过该环境是一种合成环境,由一组具体 .NET 实现的交集生成。这意味着,公开的 API 和平台假设是平台特定的库可用的子集。

创建可移植库时,需选择平台配置。这些是需要支持的各个平台(例如,.NET Framework 4.5+、Windows Phone 8.0+)。要支持的平台越多,可生成的 API 和平台假设就越少,公分母越小。这一特性可能最初会令人感到疑惑,因为人们常认为“越多越好”,但却发现更多的支持平台总导致可用 API 更少。

许多库开发人员已经从由一个源开发多个平台特定的库(使用条件编译指令)转向开发可移植库。多种方法可在可移植库中访问平台特定的功能,其中是目前最广为接受的方法。

.NET Standard 公开一组库协定。.NET 实现必须完全支持每个协定,否则就全都不支持。因此,每个实现都支持一组 .NET Standard 协定。得出的必然结果是,.NET Standard 类库在支持其协定依赖项的平台上受到支持。

.NET Standard 不公开整个 .NET Framework 的功能(也不将此作为目标),但相比可移植类库,其公开的 API 更多。随着时间推移,将添加更多的 API。

下列平台支持 .NET Standard 库:

  • .NET Core
  • Mono
  • Xamarin.iOS、Xamarin.Mac、Xamarin.Android
  • 通用 Windows 平台 (UWP)
  • Windows
  • Windows Phone Silverlight
    有关详细信息,请参阅 .NET Standard 主题。