nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

.NET FrameworkからHttpClientを利用している.NET Standardのプロジェクトを利用する

本エントリーはこれを書いている2017.08.26時点での話ですぐ状況は変わるかもしれませんのでご注意ください。

表題の件、普通にやるとなぜかつぎのようなエラーが出ます。

System.IO.FileNotFoundException
ファイルまたはアセンブリ ‘System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

  • .NET Frameworkは4.7 & .NET Standard 2.0
  • .NET Frameworkは4.7 & .NET Standard 1.4
  • .NET Frameworkは4.6.2 & .NET Standard 1.4

どのパターンでもうまく動きません。 バージョンの不一致なのでしょうが、.NET 4.6.2も4.7もクラスライブラリプロジェクトを作成した直後からSystem.Net.Httpへのアセンブリ参照を持っていますが、バージョンは4.0.0.0です。

f:id:nuitsjp:20170826215713p:plain

f:id:nuitsjp:20170826215727p:plain

そして.NET Standard側は4.3.0です。

f:id:nuitsjp:20170826215819p:plain

4.0.0.0のアセンブリ参照を削除しても動作しませんし、4.1.0.0てどこからでたのやら?私にはまったく分かりませんが、とりあえず対処法はわかりました。

  1. .NET Frameworkプロジェクト作成直後にデフォルトで登録されているアセンブリ参照のSystem.Net.Httpを削除する
  2. NuGetからSystem.Net.Httpの4.3.0をインストールする

NuGet上のSystem.Net.Httpの最新は4.3.2ですが、これを入れると正しく動きませんので(.NET Standard側も4.3.2いれたら動くかも?未確認です)気を付けてください。

以上です。動いたけどいまいち釈然としませんね。。。