VSソリューションにはいくつかのプロジェクトがあります。 「System.Net.Http」NuGetパッケージを追加すると、バージョン4.2.0.0として表示されます。次に、同じことを行い、同じNuGetパッケージを追加しますが、もう1つはバージョンです。 4.1.1.2
次に、警告が表示されます:
System.Net.Httpの間に競合が見つかりました
EDIT1:
Gathering dependency information took 1.7 sec
Attempting to resolve dependencies for package 'System.Net.Http.4.3.3' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'System.Net.Http.4.3.3'
Resolved actions to install package 'System.Net.Http.4.3.3'
Retrieving package 'System.Net.Http 4.3.3' from 'nuget.org'.
Adding package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to 'packages.config'
Successfully installed 'System.Net.Http 4.3.3' to ....Service
Executing nuget actions took 2.05 sec
Time Elapsed: 00:00:03.8937113
正しいバージョンがインストールされていることに注意してください。ただし、=>小道具=>バージョンは4.1.1.2と表示されます
インストールしているバージョンを強制することができるので、両方のプロジェクトを揃えたり、出力ウィンドウでメッセージを見つけたりすることができます。 公式リンク には4.2リリースがリストされていないため、これを行います(ソリューション全体)
Install-Package System.Net.Http -Version 4.1.1
または両方のプロジェクト
Get-Project ProjectName | Install-Package System.Net.Http -Version 4.1.1
または、さらに良い(最新バージョンを使用)
Install-Package System.Net.Http -Version 4.3.3
[〜#〜] edit [〜#〜]
どうやらこれを経験したのは初めてではないようです 。答えはどうですか here ?基本的に、bothプロジェクト設定ファイルのこのセクションを調整できます:
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
トークン値を調整する必要がある場合があります。念のため、両方のプロジェクトの設定ファイルを貼り付けてください=
編集:これは、.NETFrameworkを使用している場合にのみ発生します。 .NET Core/Standardランドでは、最新のSystem.Net.Http
アセンブリバージョンは常に4.1.2.0のようです-4.2.0.0バージョンはありません。
System.Net.Httpに関する問題は、way、wayよりも複雑です。ここでの答えは、...
System.Net.Http
NuGetパッケージがありますが、いいえ、同じアセンブリの最新バージョンをインストールしませんnot(バージョン4.1が含まれています) System.Net.Http
アセンブリの.1.2、4.2.0.0ではありません)。System.Buffers
(バージョン4.5.0が機能した)など、それを使用する特定のNuGetパッケージを参照することです。TL; DR:
System.Buffers
4.2.0.0アセンブリを使用していることを確認する場合は、System.Net.Http
4.5.0+ NuGet参照をプロジェクトに追加します。
参照:
ここに提示されているすべてのソリューションと this answer で引用されている参考文献を確認した後、最終的にこれを完全に解決しました。これは、この問題を経験した人なら誰でもすべきだと思うことです。
System.Net.Http
への参照を削除します(PackageReferenceを使用するプロジェクトの場合、NuGetシンボルが表示されるはずです Solution Explorerの参照の横)。プロジェクトでSystem.Net.Http
が必要であることが確実な場合は、削除されたSystem.Net.Http
参照を対応するNuGetパッケージに置き換えます(最初にそれなしでビルドしてみてください)。 packages.configを使用するプロジェクトの場合は、System.Net.Http
への参照が必要であり、NuGetも使用していることを確認するように特に注意してください。 NuGetを使用して既に参照されている場合でも、NuGetを使用してSystem.Net.Http
を削除および再追加すると(allプロジェクトを参照する場合)役立つことがあります。ステップ2がどこかでばらばらになる可能性があることがわかりました。後で参照を追加した後、マニフェストの不一致により実行時例外が発生することが判明した場合(ユニットテスト中であっても)、関連するWebサイトプロジェクトからすべてのバインディングリダイレクトを削除し、警告に示されている推奨リダイレクトを再度追加します手順6。
私はこの問題を体系的に解決するために多くの時間を費やしたので、異常な場合にはいくつかの側面的な思考が必要かもしれませんが、上記の手順はほとんどの人々の問題を完全に解決すると信じています。これが機能する(または機能しない)場合はお知らせください。
これは、フレームワークSystem.Net.Httpへの参照がある場合に発生する傾向がありますが、パッケージ参照の1つにNuGetパッケージSystem.Net.Httpが必要です。
そのアセンブリへの参照があるかどうかを確認し、それを削除して、代わりにNuGetパッケージをインストールします
これに対する新しいソリューションがあり、2018年10月9日から機能します。
System.Net.Http
へのすべての参照を最新バージョン4.3.4に更新する必要があります。プロジェクトに新しいプロジェクト構造がある場合は、編集して、次のパッケージ参照が含まれていることを確認します。
<PackageReference Include="System.Net.Http" Version="4.3.4" />
ソリューションを検索し、System.Net.Httpの既存のバインディングリダイレクトを削除します。これらは次のようになります。
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
再構築、警告は消え、コードは正常に構築および実行されるはずです
Neoが上記に投稿した6つのステップは、ASP.NETパッケージの問題を解決するのに役立ちました!ネオありがとう!私はこれを一週間以上扱っていました。
上記のNeoの投稿を実装した経験から個人的なメモを共有したいだけです。
。Net Framework 4.6.1をターゲットとしたASP.NET Web APIプロジェクトがありました
ここに私がやったことがあります:
<PropertyGroup> <AutoUnifyAssemblyReferences> true </ AutoUnifyAssemblyReferences> </ PropertyGroup>