web-dev-qa-db-ja.com

ファイルまたはアセンブリSystem.Net.Httpバージョン4.1.1.0をロードできませんでした

Net Framework 4 dllをNet Coreに移植しています。ユニットテストプロジェクトを移植すると、特定のテスト(すべてではない)を実行する例外が発生します。

System.IO.FileLoadException:ファイルまたはアセンブリ「System.Net.Http、Version = 4.1.1.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

これは私のdllのproject.jsonです

 {
  "version": "1.0.0-*",

  "dependencies": {
    "log4net": "2.0.7",
    "NETStandard.Library": "1.6.1",
    "Newtonsoft.Json": "9.0.1",
    "StackExchange.Redis": "1.2.1"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

そして、これはユニットテストプロジェクトのPackages.configです

<packages>
  <package id="Castle.Core" version="4.0.0" targetFramework="net462" />
  <package id="log4net" version="2.0.7" targetFramework="net462" />
  <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="Moq" version="4.7.1" targetFramework="net462" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
  <package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
  <package id="System.IO" version="4.1.0" targetFramework="net462" />
  <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="System.IO.FileSystem.Watcher" version="4.0.0" targetFramework="net462" />
  <package id="System.Linq" version="4.1.0" targetFramework="net462" />
  <package id="System.Net.Http" version="4.1.1" targetFramework="net462" />
  <package id="System.Net.NameResolution" version="4.0.0" targetFramework="net462" />
  <package id="System.Runtime" version="4.1.0" targetFramework="net462" />
  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Algorithms" version="4.2.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Encoding" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.Primitives" version="4.0.0" targetFramework="net462" />
  <package id="System.Security.Cryptography.X509Certificates" version="4.1.0" targetFramework="net462" />
  <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net462" />
  <package id="System.Threading.Thread" version="4.0.0" targetFramework="net462" />
</packages>
34
Jawen

System.Net.Httpを4.3.1に更新して修正しました

35
Jawen

私は問題を取得し、それが私が2つの異なる参照を持っていたためであることに気づきました。 1つは私のプロジェクトライブラリからの参照であり、2つ目は.Net標準ライブラリの依存関係であり、したがってNugetパッケージです。解決する手順は次のとおりです。

  • System.Net.Httpへの参照を削除します(プロジェクト=>参照を追加=>参照を削除)。
  • System.NetおよびSystem.Net.Http Nugetパッケージを保持する
  • Update-Package –reinstall System.Net.Httpを実行して、参照を戻します。

今では再び動作します。 :)

21
Jean

私の問題は、新しいバージョンのSystem.Net.Httpへの参照を持つ参照アセンブリがサービスにあったことです。サービスのSystem.Net.Httpを更新することで問題を解決しました。

3
Grigory Bushuev

そして今、ジュニアプログラマーソリューション.... JagetとJeanによって提案された更新をNuget Package Managerの正しい場所でも行っていることを再確認してください。プロジェクトとテストプロジェクトにソリューションがある可能性があることを忘れないでください。そのため、両方の参照セットを更新するために再確認してください。

2
Brian H

App.configに移動し、System.Net.Httpを参照するすべての行を削除します。

2
Shiroy

私はこの問題を抱えていましたが、お互いに依存する10のプロジェクトがありました。依存しているプロジェクトの1つで要求したバージョンを追加することで、これを修正しました。コンパイルには必要ありませんでしたが、それを追加すると、復元中に他のプロジェクトのバージョンが修正されたようです。だから:

ファイルまたはアセンブリ「System.Net.Http、Version = 4.1.1.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

次に:

ファイルまたはアセンブリ「System.Net.Http、Version = 4.1.1.1、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

そこで、1つのプロジェクトに「System.Net.Http」:「4.1.1」を追加しました。

8つのプロジェクトを復元しながら、実際に問題を修正しました。

1
Assil

この問題を解決する最良かつ最も簡単な方法は、バインディングリダイレクトを使用することです。

OldVersionを0.0.0.0-5.0.0.0として、newVersionを4.1.1.0として指定するだけです

たとえば、バージョン4.1.1.0はバージョンです。

1
Jacob Gaiski

私はジャンに同意します。アセンブリへの参照を削除してから、Nugetを使用して新しい参照を追加してください!実際のSystem.Net.Httpバージョンは関係ありません。アセンブリへの参照を削除した後、すべて正常に動作する、バージョン4.3.2