ChatWorkのAPIエンドポイントがv2に変わる対応を公開したのですが、同時に0.5では.NET Frameworkでは使えなかったので0.6.1で.NET Framework 4.5でも使えるようにしました。
紆余曲折あった.NET Coreのプロジェクトファイルですが、*.csproj
になったおかげで最終的にはNuGetライブラリの設定もcsprojの中で定義することができるようになったのですっきりしました。また、Visual StudioからNuGetパッケージの作成もできるようになりました。
さて、.NET Coreと.NET Frameworkの両方に対応する方法ですが、csproj内のTargetFrameworks
要素に併記すればOKです。対象が1つのときはTargetFramework
でもいいのですが、複数のときは複数形のTargetFrameworks
です。
<TargetFrameworks>netstandard1.6;net45</TargetFrameworks>
この辺の記載についてはこちらに記述があります。
ただ、これだけだと下記に報告されているように .NET Framework側のビルドでHttpClientクラスがみつからないエラーが出ます。
とりあえずのworkaroundとして.NET Frameworkのときだけ明示的にSystem.Net.Http
を追加すると動くようです。
<!-- see https://github.com/dotnet/cli/issues/6033 --> <ItemGroup Condition=" '$(TargetFramework)' == 'net45' " Label=".NET 4.5 Package References"> <Reference Include="System.Net.Http" /> </ItemGroup>
さて、この複数のTargetFrameworkの指定、VisualStudio 2017 Preview (15.3)からデバッグ実行などが容易になったとRelease Notesに書かれています。
なのですが、まだバグがあってTargetFrameworksを複数指定しているとNuGetのリストアが片方で実行されないようで、Issueを報告しておきました。
developercommunity.visualstudio.com
これのworkaroundとしては、直接dotnet restore
コマンドを実行するとリストアが正常に完了されました。NuGetパッケージの作成もdotnet pack -c Release
で実行できます。