LoginSignup
43
28

More than 5 years have passed since last update.

.NET Standardってなに?

Posted at

そういえば.NET Standardって何なのか知らなかったので、少し調べてみたこと。

.NET Standardって何なのよ?

.NET Frameworkとか.NET Coreとかあるけれど、.NET Standardも同じようなフレームワークなの?→違います。仕様です。

.NET Standardは仕様

公式の説明によると、.NET Standardというのは仕様であって、実体のないAPIの目録みたいなもの。

で、この仕様に従って.NET Framework.NET CoreXamarin.iOS/Mac/AndroidUWPといった様々な.NET実装においてAPIが実装されている。
それぞれの.NET実装は「固有部分のAPI」+「.NET Standard実装部分のAPI」からなる。

この.NET Standardに従って実装されたAPIというのは、どの.NET実装でも使えるAPIなので、このAPIだけを使ってライブラリを作成すれば、そのライブラリをすべての種類のアプリケーションの作成において使うことができる。

.NET Standardのバージョンと各.NET実装の関係

ただし、.NET Standardにはもちろんバージョンがあり、各.NET実装のそれぞれのバージョンにおいて、どのバージョンの.NET Standardを実装しているかが異なる。
例えば、.NET Framework4.6が実装している.NET Standardのバージョンは1.3。
公式の説明を参照。)

複数の.NET実装の間で共通のライブラリを作成する場合は、それぞれのバージョンに気を付ける必要がある。

.NET Standard準拠のライブラリありきで考えるとき

.NET Standard2.0に準拠したライブラリを作成し、それを.NET FrameworkとXamarin.Androidで使いたい場合、.NET Frameworkのバージョンは4.6.1以上、Xamarin.Androidのバージョンは8.0以上でなければならない。

既存のアプリケーションにあわせるとき

逆に、.NET Framework4.6のアプリケーションと、Xamarin.Android7.0のアプリケーションの間で一部処理をライブラリで共有化したい場合、ライブラリ作成時に選択する.NET Standardのバージョンは低いほうの「1.3」でなければならない。

.NET Standardの下位互換性

.NET Standardは下位バージョンのAPIを完全に含むので、下位互換性100%。
例えば、.NET Standard2.0に準拠しているということは、それ以前のバージョンである1.6や1.0のAPIも含んでいるということ。

おわりに

  • .NET Standardはただの仕様。
  • 各.NET実装において.NET Standardが実装されている。
  • .NET Standardは下位互換性100%。
43
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
28