別の方法で質問に答える: ライブラリは、SDK が必要とする環境をターゲットにする必要があります。SDK を使用する必要がない場合netstandard
(または .NET Core RC2 より前dotnet
)。
dnxcore50
CoreCLR/CoreFx で実行される DNX SDK (非推奨、netcoreapp1.0
代わりに使用)。
dnx451
.Net 4.5.1 で動作する DNX SDK (デスクトップ CLR / フル BCL および FCL) (非推奨、net451
代わりに使用)。
net46
デスクトップ CLR / フル BCL および FCL で動作する .Net Framework 4.6 SDK。
uap10.0
.Net Native/CoreFx で実行される UWP Windows 10 SDK。
netcoreapp1.0
CoreCLR/CoreFx で実行される .NET Core 1.0 SDK。
netstandard1.5
(RC2、dotnet
以前) 依存関係を宣言する純粋な IL コード (PCL コントラクトの代わりに System.Runtime (ベースの) ライブラリ)。フレームワークの依存関係は、.Net 4.5.x 以降、.NET Core または UWP (さまざまなバージョンの System.Runtime ベースのライブラリ セット) で利用できます。RC2dotnet
は推奨されていないため、netstandard
代わりに使用してください。
netstandard2.0
(.NET Core 2.0; ~ 2017 年6 月)netstandard.dll
すべてのプラットフォーム (.NET Core、.NET Framework、Xamarin、Mono、Unity3D) が実装する (または NotImplementedException をスローする) 必要がある機能セットのみに依存する純粋な IL コード。これnetstandard2.x
は、おおよそ .NET Framework の BCL ライブラリです (WMI、WinForms、WPF、WCF、WWF などの FCL コンポーネントを除く)。互換性シムにより、ほとんどの既存の NuGet パッケージは自動的にnetstandard2.0
.
したがって、ライブラリにいくつかのアルゴリズムしかない場合や、プラットフォームに固有でない場合は、netstandard
/を使用してdotnet
ください。依存関係のいずれかが制限されている場合、この依存関係は、それを使用するアプリケーション (DNX、UWP、.Net46 など) まで伝播します。
マラキのように、オレンの記事シリーズしか強調できません。(彼は同じトピックで新しいものを書きました: https://oren.codes/2015/07/29/targeting-net-core/ )。
ps: dotnet
/netstandard
は具体的なランタイムではなく、その抽象化です。この場合、ランタイムを指定することさえせず、代わりに次のように言うターゲットです:ILを正しく解釈するものは何でも行きます。たとえばdnxcore5
、特定のランタイム (CoreCLR) を持つ SDK (DNX) を指定するターゲットです。この場合、実行時の動作 (JIT の使用、x-plat 実装の可用性など) についてさらに想定することができます。
pps:次の RC2 リリースでdotnet
名前が用語に変換されたことに注意してください。netstandard
また、完全な DNX SDK が .NET Core と ASP.NET チームに分割されました。したがって、.NET Core (CoreCLR/CoreFx) のフレームワーク モニカーはnetcoreapp1.0
であり、ASP.NET スタックの 99% はnetstandard1.5
. DNX モニカ (dnx451
およびdnxcore50
) は非推奨です。(.NET Core ではなく) .NET Framework で ASP.NET Core を実行する場合は、net451
. 詳細についてはよくお読みください: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
ppps: 依存関係ベースのコントラクトの概念はそれ以上開発されず、今後の .NET Core 2.0 を含むすべてのプラットフォームで実装する必要があるnetstandard1.x
1 つの (巨大な) 標準コントラクト (32k API; ) に変更されたことに注意してください。netstandard2.0
この変更には、NuGet パッケージの既存のエコシステム (参照およびフレンド) のほとんどを、中間互換性 shim を使用してパッケージmscorlib
に統合できるという利点があります。netstandard2.0