.NET Standard の新機能

.NET Standard は、各バージョンの標準に準拠した .NET 実装で利用できる必要がある一連の API がバージョン管理され、定義された正式な仕様です。 .NET Standard はライブラリ開発者を対象としています。 .NET Standard のあるバージョンをターゲットとするライブラリは、その標準のバージョンをサポートする .NET または Xamarin 実装で使用することができます。

.NET Standard は、.NET SDK に含まれています。 また、.NET ワークロードを選択した場合は、Visual Studio にも含まれます。

.NET Standard 2.1 は、リリースされる .NET Standard の最後のバージョンとなります。 詳細については、「.NET 5 以降と .NET Standard」を参照してください。

サポートされている .NET 実装

.NET Standard 2.1 は、次の .NET 実装でサポートされています。

  • .NET Core 3.0 以降 (.NET 5 以降を含む)
  • Mono 6.4 以降
  • Xamarin.iOS 12.16 以降
  • Xamarin.Android 10.0 以降

.NET Standard 2.0 は、次の .NET 実装でサポートされています。

  • .NET Core 2.0 以降 (.NET 5 以降を含む)
  • .NET Framework 4.6.1 以降
  • Mono 5.4 以降
  • Xamarin.iOS 10.14 以降
  • Xamarin.Mac 3.8 以降
  • Xamarin.Android 8.0 以降
  • ユニバーサル Windows プラットフォーム 10.0.16299 以降

.NET Standard 2.1 の新機能

.NET Standard 2.1 により、多数の API が標準に追加されています。 これらのうちいくつかは新しい API であり、それ以外の API は .NET 実装をさらに収束させるのに役立つ既存の API です。 .NET Standard 2.1 に追加されている API の一覧については、「.NET Standard 2.1 vs 2.0」 (.NET Standard 2.1 と 2.0 の比較) を参照してください。

詳細については、「.NET Standard 2.1 の発表」というブログ記事を参照してください。

.NET Standard 2.0 の新機能

.NET Standard 2.0 には、次の新機能が含まれています。

大幅に拡張された一連の API

.NET Standard バージョン 1.6 には、比較的少数の API のサブセットが含まれていました。 除外された API の中には、.NET Framework または Xamarin で一般的に使用されていた多くの API がありました。 その結果、複数の .NET 実装をターゲットとするアプリケーションやライブラリを開発する場合に、使い慣れた API に適した代替のものを開発者が見つけなければならないので、開発は複雑になります。 .NET Standard 2.0 では、以前のバージョンの標準である .NET Standard 1.6 で使用できる API に 20,000 個を超える API を追加して、この制限に対処しています。 .NET Standard 2.0 に追加された API の一覧については、「.NET Standard 2.0 と 1.6 の比較」を参照してください。

.NET Standard 2.0 の System 名前空間には、以下のような追加がありました。

  • AppDomain クラスのサポート。
  • Array クラスに追加されたメンバーの配列操作のサポートを改善しました。
  • Attribute クラスに追加されたメンバーの属性操作のサポートを改善しました。
  • カレンダーのサポートを改善し、DateTime 値の書式設定オプションを追加しました。
  • Decimal の丸め処理機能を追加しました。
  • Environment クラスの機能を追加しました。
  • GC クラスによるガベージ コレクターの制御を強化しました。
  • String クラスの文字列の比較、列挙、正規化のサポートを強化しました。
  • TimeZoneInfo.AdjustmentRule クラスと TimeZoneInfo.TransitionTime クラスでの夏時間の調整および移行時間のサポート。
  • Type クラスの機能が大幅に強化されました。
  • SerializationInfo および StreamingContext パラメーターを使用する例外コンストラクターを追加することで、例外オブジェクトの逆シリアル化のサポートを改善しました。

.NET Framework ライブラリのサポート

多くのライブラリで、.NET Standard ではなく .NET Framework がターゲットになっています。 ただし、このようなライブラリの呼び出しのほとんどは、.NET Standard 2.0 に含まれている API に対するものです。 .NET Standard 2.0 以降、互換性 shim を使用して .NET Standard ライブラリから .NET Framework ライブラリにアクセスできるようになりました。 この互換レイヤーは開発者に対して透過的です。 .NET Framework ライブラリを利用するために必要なことはありません。

唯一の要件は、.NET Framework クラス ライブラリから呼び出される API が .NET Standard 2.0 に含まれている必要があることです。

Visual Basic のサポート

Visual Basic で .NET Standard ライブラリを開発できるようになりました。 .NET Core ワークロードがインストールされた Visual Studio 2019 と Visual Studio 2017 バージョン 15.3 以降には、.NET Standard クラス ライブラリ テンプレートが含まれています。 他の開発ツールと環境を使用している Visual Basic 開発者の場合、dotnet new コマンドを使用して .NET Standard ライブラリ プロジェクトを作成できます。 詳細については、「.NET Standard ライブラリのツールのサポート」を参照してください。

.NET Standard ライブラリのツールのサポート

.NET Core 2.0 と .NET Standard 2.0 がリリースされ、Visual Studio 2017 と .NET CLI の両方に .NET Standard ライブラリの作成をサポートするツールが追加されました。

.NET Core クロスプラットフォーム開発ワークロードを使用して Visual Studio をインストールする場合は、次の図に示すように、プロジェクト テンプレートを使用して .NET Standard 2.0 ライブラリ プロジェクトを作成できます。

Add New .NET Standard library project

.NET CLI を使用している場合、次の dotnet new コマンドによって、.NET Standard 2.0 をターゲットとするクラス ライブラリ プロジェクトが作成されます。

dotnet new classlib

関連項目