NuGetにおける「dotnet」とか「.NETPlatform」とかいうやつ
CoreTweet からフォークして、通信部分の疎結合化をした LibAzyotter を DNX でビルドできるようにするなどしていました。
その中で出会った新たな NuGet のフレームワーク設定「dotnet」についてまとめておきます。
dotnet, .NETPlatform とは
dotnet は CoreCLR 向けアセンブリのターゲットです。詳しい経緯はよくわかりませんでしたが、 NuGet のコミットログを見る限り、もともと「core」だったものが、現在の「dotnet」になり、多くのフレームワークに対応する包括的な存在になりました。
「netcore」というのもありますが、たぶん WinRT とか UWP 用です。でもやってることは同じなのかな?
互換性のあるプラットフォーム
9/16 現在、以下のプラットフォームで「dotnet」のライブラリをインストールできます。たぶん。また、現在のところ「dotnet」は「dotnet50」を指します。
ソース: https://github.com/NuGet/NuGet3/blob/dee69ffe7153c5230d6d9ddb936d6ec55ec4f00a/src/NuGet.Frameworks/DefaultFrameworkMappings.cs
- netcore50
- net46
- net45
- dnx451
- sl5
- wp8
- dnxcore
- netcore
- uap
- win
- wpa
- Xamarin 系
このようにほとんどのプラットフォームをカバーできる PCL のような存在ですが、基本的に dotnet をターゲットとするライブラリをつくろうとすると、 System.Runtime に依存することになります。このパッケージは dnxcore50, net46, netcore50 と Xamarin 系にしか対応していないため、ターゲットにできるのは DNX, UWP, .NET 4.6 ということになります。