アジョブジ星通信

進捗が出た頃に更新されるブログ。

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 ということになります。

まとめ

これから登場するプラットフォームには dotnet ですべてまかなえる時代になると思いますが、 .NET 4.5 以下, Windows8 などへの対応は今まで通り続けなければいけなさそうです。