Google APIを使用するプログラムに取り組んでいます。ただし、プログラムを実行するたびに、次のエラーが発生し続けます。
ファイルまたはアセンブリ「System.Net.Http.Primitives、Version = 1.5.0.0、Culture = neutral、PublicKeyToken = b03f5f711d50a3a」またはその依存関係の1つをロードできませんでした。検出されたアセンブリのマニフェスト定義は、アセンブリ参照と一致しません。
Visual Studio 2012 Expressを使用しています。私はこれをフォローしようとしました link と多くのフォーラムを調べましたが、どれも機能していないようです。主な問題は、私が参照したDLLファイル "Google.Apis.dll"に由来するようで、System.Net.Http.Primitives v1.5.0.0を参照します。ただし、バージョンはmyプログラム参照は2.2.13.0です。代わりにプログラム参照v1.5.0.0を試しました(Google.Apisのソースコードとともにdllを見つけることができました)が、これは私がもっと必要とする別の問題を引き起こしただけです。 System.Net.Http.Primitivesの最新バージョン。
私はこれを回避する方法を見つけようとしていますが、うまくいくものを見つけることができないようです。時間をありがとう。
Google APIでも同じ問題に遭遇しました。ここでの主な問題は、Microsoft Http Client Librariesをインストールした場合、プロジェクトにSystem.Net.Http.Primitives DLLの更新バージョンが追加されることです。 web.configは、デフォルトバージョン1.5をまだ使用していることを前提としています。修正するには、次の2つのことが必要です。
最初:Google APIおよびMicrosoft Http Client Libraries。 NuGetを介して更新をインストールできます。 Webサイトを右クリックし、[NuGetパッケージの管理]をクリックして、左側の[更新プログラム]を選択します。この投稿の時点で、Google APIの一部はプレリリースのみです。アップデート画面の左上にある「プレリリースを含める」を選択すると、NuGetを介してインストールできます。
Second dependentAssemblyをweb.configに更新/追加します。これを行うには、インストールされたSystem.Net.HTTP.Primitives.dllのバージョンを知る必要があります。 Windowsエクスプローラー内のbinディレクトリを確認します。 System.Net.HTTP.Primitives.dllを見つけて右クリックし、プロパティを選択して、[詳細]タブをクリックします。そこにあるバージョンに注意してください。この投稿の時点では、鉱山は4.0.10.0でした。
次に、正しいバージョンのdependentAssemblyセクションを追加/更新します。
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
私にとっては、Nugetから「Microsoft Http Client Libraries」をインストールするだけでした。
Web.config(app.config)に次を追加します。
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.13.0" newVersion="4.2.13.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
私にとっては、次のように機能しました:
Visual Studio(2012)> [ツール]> [Nugetパッケージマネージャー]> [パッケージマネージャーコンソール]。パッケージマネージャーコンソールの上に、パッケージソースがあります:nuget.orgデフォルトプロジェクト:System.Net.Http.Primitivesを必要とするプロジェクトエディターでプロジェクトファイル(yourproject.csproj)を監視する私の場合はMicrosoft.Net.Http.2.2.28でした)
そこで、私は https://www.nuget.org/packages/Microsoft.Net.Http/ に行き、「Version History」の下にあるバージョンをクリックしました(そうでない場合はページを少しスクロールしてください) tそれを見ます)。バージョンを選択した後、提案されたコマンドをコピーします-私の場合は:
インストールパッケージMicrosoft.Net.Http-バージョン2.2.28
ただし、最新バージョンが必要な場合は次のようにします。
インストールパッケージMicrosoft.Net.Http
以前に説明したように、以前に開いたVisual Studioパッケージマネージャーコンソールに貼り付けます。コマンドを実行します。
参照下のプロジェクトでは、System.Net.Http.Primitivesが更新されました。
同様の問題がありました。しかし、私の場合、Paulによるapp.configの変更のソリューションは機能しませんでした。理由は、別のアプリケーション内でプラグインとして使用しているためです。そのため、アプリケーションの構成ファイルが考慮されます。そこで、GitHubからGoogle APIコードを取得し、System.Net.Http.Primitivesの依存関係を削除した後、Google.Apis.Coreライブラリを構築しました。次に、そのDLLを使用して問題を解決しました。
同様の問題がありました。
Nugetを更新してみてください(ツール/拡張機能と更新...).
/ジョナス
Assemblybindingについての上記の答えは正しいですが、machine.configには触れないでください。
Assemblybindingは、ライブラリアセンブリ(.dll.config)ではなく、ライブラリを参照するプロジェクトのすべてのEXECUTABLEアセンブリ(.exe.config)の構成ファイルで設定する必要があります。
私が働いている会社にGoogle.Apis.Drive.v2(v1.9.2.1860)を使用するコードをリリースしたときに、この問題に遭遇しました。 exeとVisual Studio(およびNuGet)が生成したすべてのDLLを提供したところ、エラーが発生しました。エラーが発生したことはありません。
修正は簡単でした(一度考え出した):Nugetからapiをインストールすると、ファイル(assemblyname.exe.config)が出力(別名、デバッグまたはリリース)フォルダーに自動的に生成されます。必要なことは、生成されたフォルダ以外の場所でアセンブリを実行しているときに、そのファイルを含めることだけです。そのファイルのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.29.0" newVersion="4.2.29.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
これは基本的にPaulの「2番目の」修正ですが、パッケージマネージャーによって自動的に生成されます。私にとっての問題は、Google.Apis.AuthとGoogle.Apis.Core(v1.9.3)にアップデートして彼の「最初の」修正を試みたとき、事態が悪化したことでした。 「Google.Apis.Core」のバージョンが間違っていた場合を除き、同じエラーが発生します(おそらく、同じ.exe.configファイルを含めることで解決できた可能性があります)。
これが誰かを助けることを願っています、私はこのスレッドがかなり古いことを知っていますが、簡単なGoogle検索が私を導いたものです。
編集:言及するのを忘れましたが、これは.NET 4.5を対象とするコンソールアプリケーションに関連しています。その一部はおそらく他の.NETターゲットまたはASP.NETにまだ関連していますが、私にはわかりません。あなたのマイレージは異なる場合があります。
インストールパッケージMicrosoft.Net.Http-バージョン2.2.22
このバージョンには、そのdll\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dllがあります
これを簡単に解決できました。 Nuget Package Managerを開き、Microsoft ASP.NET Web API 2.2クライアントライブラリパッケージを更新しました。これにより、Microsoft.Net.Httpが最新バージョンに更新され、System.Net.Http.Primitivesアセンブリの問題を特定できなくなりました。お役に立てれば!
どういうわけか、ポール・レムケによる人気のある答えは私には役に立たなかった。プロジェクトは、.net v 2.0で始まり、.netバージョン4.5にアップグレードされたwebformsアプリケーションです
パッケージを更新し、nugetが正しいdependentAssembly/bindingRedirectsを作成しました。
一部のコメントによると、ローカルのmachine.configファイルを変更することはおそらく最善のアイデアではありません。
どうやら、web.configファイルに、アプリがbindingRedirectsを無視する原因となった属性がありました。
<configuration xmlns="http://schemas.Microsoft.com/.NetConfiguration/v2.0">
そのxmlns属性を削除し、機能し始めました。
私の場合、クラスライブラリからNuGetパッケージを参照していました。 NuGetは、クラスライブラリのapp.configが完全に無視されることを通知できず、その内容を手動で.exeのapp.configにコピーする必要があります。
NuGetはWeb.Configで次の変更を行いました
<dependentAssembly> <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.22.0" newVersion="4.2.22.0" /> </dependentAssembly>
に
<dependentAssembly> <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.28.0" newVersion="4.2.28.0" /> </dependentAssembly>
これは、このパッケージのインストールとその後の削除(バージョン管理の復帰による)に続いていました https://www.nuget.org/packages/Microsoft.AspNet.WebApi.MessageHandlers.Compression/