マイクロソフト系技術情報 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 Core の普及に伴い、自然と新しい API (≒ .NET Core)に移行。」とはならなかった。
  • .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

  • netstandard2.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パッケージ(NetStandard.Library
  • [TypeForwardedTo?]による実行時の型転送用ファサードアセンブリ

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に上げることにした。
    • 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 のクラスライブラリを開発できる。

.NET Standardへの移行

参考

microsoft.com

infoq.com

@IT

Build Insider

その他


Tags: :.NET開発, :.NET Core, :.NET Standard


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-29 (金) 15:25:16 (16d)