「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
.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 の小さなバージョンの方が多くの環境で動作する模様。
.NET Standard 2.x  †
TPM = netstandard2.x
リリース  †
サポート  †
- Microsoftは、 大量のAPI追加と互換性レイヤー導入のため、バージョン番号を2.0に上げることにした。
 
- 32,000以上のAPIが含まれる。
.NET Standard 1.0の400%、.NET Standard 1.6の140%増えている。 
- 互換レイヤがあるらしい。
多くのNuGetパッケージは.NET Framework向けに作成されており、Standardと互換性を持たせるのはかなり難しい。
そこでMicrosoftは、たとえ.NET StandardやPCL向けにビルドされていなくても、
ライブラリを複数のプラットフォームで動かせるようにする薄いレイヤーを追加した。
この互換性機能のおかげで、NuGetパッケージの70%ほどはStandardと互換性がある。 
- .NET Standard 2.0は
- 1.x Standardへの破壊的変更は導入されず、1.6をベースにしている。
 
- .NET 4.6.0 (以前) や、Windows Phone 8、Windows 8.x(ストアアプリ)を
サポートする必要がなければ、.NET Standard 2.0の方が多くの環境で動作する模様。 
 
- NET Standard 2.0は、以下によってサポートされる。
- .NET Framework 4.6.1
 
- .NET Core 2.0
 
- Mono 5.4
 
- Xamarin.iOS 10.14
 
- Xamarin.Mac 3.8
 
- Xamarin.Android 7.5
 
- UWP
新バージョンは、今年後半に最新のStandardをサポートして利用可能になる予定。 
- Unity
近い将来、ツールを最新バージョンに合わせる際、.NET Standardをサポートする予定。 
 
参考  †
microsoft.com  †
infoq.com  †
@IT  †
- 特集:マイクロソフトテクノロジーの現在と未来:.NET Standardとは - @IT
 
その他  †
Tags: :.NET開発, :.NET Core, :.NET Standard