「マイクロソフト系技術情報 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
リリース  †
以下で確認できる。
開発環境の構築  †
Visual Studio 2017 Update3をインストールした後に.NET Core SDKをインストールする。
すると、Visual Studio 2017のメニューから、
- 新規作成 ---> プロジェクト
 
- .NET Standard ---> クラスライブラリ(.NET Standard)
 
と、ターゲットフレームワーク  :.NET Standard のクラスライブラリを開発できる。
開発タスクの遂行  †
開発環境の維持保守  †
- 古くなったランタイム・SDKは手動で削除が推奨されている。
 
.NET Standard 2.0  †
TPM = netstandard2.0
リリース  †
- .NET Standard 2.0 のリリースは「Q3 2017」とあるので、
今年の第三四半期 (2017/7~9) には出るようです。
 
サポート  †
- 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をサポートする予定。 
 
.NET Standard 2.1  †
TPM = netstandard2.1
リリース  †
サポート  †
- 策定された新機能は以下に実装されることになる。
- .NET Core 3.0
 
- Xamarin、Mono、Unity
 
 
- .NET Framework、.NET Core
.NET Frameworkと.NET Coreはどちらも前進し、どちらも完全にサポートされる予定
- 「.NET Standard 2.1」は「.NET Core 3.0」でサポート予定。
 
- 一方「.NET Framework 4.8」では、「.NET Standard 2.0」のサポートに留まる。
 
 
参考  †
microsoft.com  †
infoq.com  †
@IT  †
- 特集:マイクロソフトテクノロジーの現在と未来:.NET Standardとは - @IT
 
Build Insider  †
その他  †
Tags: :.NET開発, :.NET Core, :.NET Standard