次の方法で共有


.NET クラス ライブラリ

クラス ライブラリは、.NET の 共有ライブラリ の概念です。 これらの機能を使用すると、複数のアプリケーションで使用できるモジュールに便利な機能をコンポーネント化できます。 また、アプリケーションの起動時に不要または不明な機能を読み込む手段として使用することもできます。 クラス ライブラリは、 .NET アセンブリ ファイル形式を使用して記述されます。

使用できるクラス ライブラリには、次の 3 種類があります。

  • プラットフォーム固有の クラス ライブラリは、特定のプラットフォーム (Windows 上の .NET Framework など) 内のすべての API にアクセスできますが、そのプラットフォームを対象とするアプリとライブラリでのみ使用できます。
  • ポータブル クラス ライブラリは API のサブセットにアクセスでき、複数のプラットフォームを対象とするアプリやライブラリで使用できます。
  • .NET Standard クラス ライブラリは、プラットフォーム固有およびポータブル ライブラリの概念を 1 つのモデルに統合したものです。このモデルは、両方の長所を提供します。

プラットフォーム固有のクラス ライブラリ

プラットフォーム固有のライブラリは、単一の .NET プラットフォーム (Windows 上の .NET Framework など) にバインドされるため、既知の実行環境に大きな依存関係を持つことができます。 このような環境では、既知の API のセット (.NET および OS API) が公開され、予期される状態 (Windows レジストリなど) が維持および公開されます。

プラットフォーム固有のライブラリを作成する開発者は、基になるプラットフォームを完全に利用できます。 ライブラリはその特定のプラットフォームでのみ実行されるため、プラットフォームチェックやその他の条件付きコードは不要になります(複数のプラットフォーム向けにコードを一元化する場合を除く)。

プラットフォーム固有のライブラリは、.NET Framework のプライマリ クラス ライブラリの種類でした。 他の .NET 実装が登場したとしても、プラットフォーム固有のライブラリは主要なライブラリの種類のままでした。

ポータブル クラス ライブラリ

ポータブル ライブラリは、複数の .NET 実装でサポートされています。 既知の実行環境への依存関係を引き続き受け取ることができますが、環境は、一連の具体的な .NET 実装の積集合によって生成される合成環境です。 公開されている API とプラットフォームの前提条件は、プラットフォーム固有のライブラリで使用できるサブセットです。

ポータブル ライブラリを作成するときに、プラットフォーム構成を選択します。 プラットフォーム構成は、サポートする必要があるプラットフォームのセットです (たとえば、.NET Framework 4.5 以降、Windows Phone 8.0 以降)。 サポートするプラットフォームが増えるほど、想定可能な API とプラットフォームが減り、共通分母が最小になります。 この特性は最初は混乱する可能性があります。多くの場合、ユーザーは "より良い" と考えていますが、サポートされるプラットフォームが増えると、使用可能な API が少なくなります。

多くのライブラリ開発者は、(条件付きコンパイル ディレクティブを使用して) 1 つのソースからポータブル ライブラリに複数のプラットフォーム固有のライブラリを生成することを切り替えました。 ポータブル ライブラリ内のプラットフォーム固有の機能にアクセスするための方法はいくつかあります 。この時点で最も広く受け入れられている手法は、ベイトアンドスイッチです。

.NET Standard クラス ライブラリ

.NET Standard ライブラリは、プラットフォーム固有のポータブル ライブラリの概念に代わるものです。 これらは、基になるプラットフォームからすべての機能を公開するという意味でプラットフォーム固有です (合成プラットフォームやプラットフォームの共通部分はありません)。 これらは、すべてのサポート プラットフォームで動作するという意味で移植可能です。

.NET Standard では、一連のライブラリ コントラクトが公開されます。 .NET 実装では、各コントラクトが完全にサポートされているか、まったくサポートされていない必要があります。 そのため、各実装では一連の .NET Standard コントラクトがサポートされます。 すなわち、各 .NET Standard クラス ライブラリは、その契約の依存関係をサポートするプラットフォームでサポートされています。

.NET Standard では、.NET Framework の機能全体が公開されるわけではありません (また、その目標もありません)、ライブラリはポータブル クラス ライブラリよりも多くの API を公開します。

次の実装では、.NET Standard ライブラリがサポートされています。

  • .NET コア
  • .NET Framework
  • モノ
  • ユニバーサル Windows プラットフォーム (UWP)

詳細については、「.NET Standard」を参照してください。

Mono クラス ライブラリ

クラス ライブラリは、前に説明した 3 種類のライブラリを含め、Mono でサポートされています。 Mono は、多くの場合、.NET Framework のクロスプラットフォーム実装と見なされます。 これは、プラットフォーム固有の .NET Framework ライブラリを Mono ランタイム上で変更または再コンパイルせずに実行できるためです。 この特性は、ポータブル クラス ライブラリを作成する前に設定されていたため、.NET Framework と Mono の間でバイナリ 移植性を有効にする明確な選択肢でした (一方向でのみ機能します)。