「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- .NET Standard は、次世代のポータブル クラス ライブラリ (PCL)であるとのこと。
- .NET Standard は、
- バージョンごとに「線形的」な管理が行われていて、
- 新しいバージョンの .NET Standard は古いバージョンで定められている全てのAPIセットを含むようになっている。
- 従来のPCLのようにプロファイル(プラットフォーム)ごとに使用できるAPIが決定するのではなく、
.NET Standard の特定バージョンをサポートしている環境であれば、その全てで .NET Standard を利用できる。
∴ クロスプラットフォームで実行可能なライブラリを作成する手段として、従来のPCLを置き換える。
文脈上の意味 †
仕様としての .NET Standard †
概要 †
- CLI の実装系が持つ べき API のセットを定義
- 仕様なので実装系はその API を実装しない、または実装できないことがある。
参考 †
仕様としての .NET Standard 2.0 †
- .NET Framework のエコシステムは既に想定以上に広がっていたため、
- Xamarin もベースとしている Mono が .NET Framework 互換
- .NET Standard の範囲を広げ、従来の .NET Framework の API をより多くサポート。
- 既存の .NET Framework 向けのライブラリを .NET Core(など)でそのまま動作できるようにする。
Target Platform Moniker (TPM) としての .NET Standard †
Target Platform Moniker (TPM)とは、 †
- NuGet での対象プラットフォームを表す識別子
- PCL(のプロファイル)の後継
TPMで、.NET Standardのバージョンを指定した場合 †
当該.NET Standardのバージョンで
- 定義される標準ライブラリのみを使用して動作する。
- サポートされるプラットフォーム用のアプリケーションから使用できる。
TPM としての .NET Standard 2.0 †
- 追加されるライブラリ群
- BinaryFormatter?と、それに伴うインターフェイスやカスタム属性。
- ADO.NET(DataSet?, Data Provider, e.g.:DbConnection?.GetSchema?)のサポート。
- 以下のライブラリを追加
- mscorlib
- System
- System.Core
- System.Numerics
- System.Data
- System.IO.Compression
- System.IO.Compression.FileSystem?
- System.Xml
- System.Xml.Linq
- System.Web
- System.Net.Http
- System.Runtime.Serialization
- System.Drawing
- System.ComponentModel?.Composition
NuGet パッケージとしての .NET Standard †
NuGet パッケージとしての .NET Standard 2.0 †
netstandard.dll という実行時の型転送用ファサードアセンブリになる予定
バージョン †
.NET Standard 1.x †
- TPM = netstandard1.x の小さなバージョンの方が多くの環境で動作する模様。
- stripe-dotnetなどユーザが多いライブラリは、より多くのユーザを
サポートするため、2.xにアップグレードする予定はないもよう。
.NET Standard 2.x †
TPM = netstandard2.x
リリース †
サポート †
- Microsoftは、 大量のAPI追加と互換性レイヤー導入のため、バージョン番号を2.0に上げることにした。
- Standard 1.xへの破壊的変更は導入されず、1.6をベースにしている。
- .NET Standard 1.0の400%、.NET Standard 1.6の140% 増の32,000以上のAPIが含まれる。
- 互換レイヤがあるらしい。
- 多くのNuGetパッケージは.NET Framework向けに作成されており、Standardと互換性を持たせるのはかなり難しい。
- そこでMicrosoftは、たとえ.NET StandardやPCL向けにビルドされていなくても、
ライブラリを複数のプラットフォームで動かせるようにする薄いレイヤーを追加した。
- この互換性機能のおかげで、NuGetパッケージの70%ほどはStandardと互換性がある。
- 以下によってサポートされる。
.NET 4.6.0 (以前) や、Windows Phone 8、Windows 8.x(ストアアプリ)を
サポートする必要がなければ、.NET Standard 2.0の方が多くの環境で動作する模様。
- 上記以外
- Unity
近い将来、ツールを最新バージョンに合わせる際、.NET Standardをサポートする予定。
開発 †
Visual Studio 2017 Update3をインストールした後に.NET Core SDKをインストールする。
すると、Visual Studio 2017のメニューから、
- 新規作成 ---> プロジェクト
- .NET Standard ---> クラスライブラリ(.NET Standard)
と、ターゲットフレームワーク :.NET Standard 2.0 のクラスライブラリを開発できる。
参考 †
microsoft.com †
infoq.com †
@IT †
- 特集:マイクロソフトテクノロジーの現在と未来:.NET Standardとは - @IT
Build Insider †
その他 †
Tags: :.NET開発, :.NET Core, :.NET Standard