.net - 異なる - publickeytoken 969db8053d3322ac




解決できなかった同じ依存アセンブリの異なるバージョン間に競合が見つかりました (12)

いくつかのプロジェクトを持つソリューションをクリーンアップしてビルドすると、出力ウィンドウにビルドが成功したとレポートされます。 ただし、 エラーリストウィンドウを表示すると、この警告が表示されます。

解決できなかった同じ依存アセンブリの異なるバージョン間で競合が見つかりました。 ログの冗長性が詳細に設定されている場合、これらの参照競合はビルドログに表示されます。 C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets

このメッセージをダブルクリックすると、 C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targetsファイルが開きますが、その中には何も分かりません。

私はWeb用にVisual Studio Express 2013を使用しています。

何が間違っているのか、どのDLLをどのように見つけたら、どうすれば警告を消すことができますか?


どうすれば警告を消すことができますか?

この問題を解決するには、おそらくNuGetパッケージをreinstallまたはアップグレードする必要があります。


.NETコアに必要なコンポーネントまたは既にインストールされているフレームワークと競合するその他のアイテムがインストールされることがあります(私が推測しているもの)。 私の解決策は、プロジェクト(.csproj)ファイルを開き、それらの参照を削除することでした。 たとえば、System.IO、System.Threadingなどは、最近インストールされたNuGetパッケージにMicrosoft.Bclが含まれている場合に追加される傾向があります。 私のプロジェクトのそれらの特定のバージョンの理由はないので、参照とプロジェクトビルドを削除します。 希望が役立ちます。

プロジェクトファイルで「参照」を検索し、競合を取り除くことができます。 それらがSystemに含まれている場合は、それらを取り除くと、ビルドが機能するはずです。 これは、この問題のすべてのケースに答えることはできません - 私はあなたが私のために働いたことを知っていることを確認しています:)

私がコメントアウトした例:

<!-- <Reference Include="System.Runtime, Version=2.6.9.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> -->
  <!-- <HintPath>$(SolutionDir)packages\Microsoft.Bcl.1.1.9\lib\net40\System.Runtime.dll</HintPath> -->
  <!-- <Private>True</Private> -->
<!-- </Reference> -->


MSBuildの冗長性をDiagnostic.butに変更しましたが、上記の答えに従ってapp.configにこのコードがありました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="XbimXplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

だから最初のSystem、Versionを4.0.0.0から12.0.0.0に変更して、私のプロジェクトがうまくいった。


dotnet nuget locals --clear all CLIの問題6583で述べたように、問題はdotnet nuget locals --clear allコマンドで解決する必要があります。


パッケージを変更した場合は、slnを再度開きます。 これは私のために働いた!


パッケージマネージャコンソールからUpdate-Packageコマンドを実行する

これにより、MSB3277が修正されます。これは、すべてのパッケージおよび関連するすべてのアセンブリを可能な限り最高のバージョンに再インストールします。 特定のパッケージだけを更新することもできます。 または、必要に応じて更新後にダウングレードしてください。 お持ちのナゲットパッケージの数によっては、このプロセスに数分かかることがあります。

公式ドキュメントの詳細https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


ビジュアルスタジオでのビルドの冗長性の変更は、正しい方向を指すのに役立ちます。 VSの冗長性を変更するには、以下の手順に従ってください

1. Go to Tools->Options menu in VS
2. Open Projects and Solutions->Build and Run 
3. Change the value of the MSBuild project build output verbosity. 
   Pick one from Quiet, Minimal, Normal, Detailed and Diagnostic

ビルドの変更については、VSの出力ウィンドウ(cntl + alt + o)を確認してください


他の回答はこれを言っているが、明示していないので、私はそうするだろう....

VS2013.2では、実際に引用された情報の放出を引き起こすために、あなたはそのメッセージを読む必要がありません。

C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets(1697,5):警告MSB3277:解決できなかった同じ依存アセンブリの異なるバージョン間で競合が見つかりました。 ログの冗長性が詳細に設定されている場合、これらの参照競合はビルドログに表示されます。

これは間違っています(少なくとも、Visual Studioの一部のバージョンではVS2015 Update 3以降では正常であると思われます)。 代わりにDiagnosticTools-> Options-> Project and Solutions-> Build and RunからMSBuildプロジェクトビルドの出力を詳細に設定する )にすると、次のようなメッセージが表示されます。

"Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed"と "Newtonsoft.Json、Version = 6.0.5.17707、Culture =ニュートラル、PublicKeyToken = 30ad4fe6b2a6aeed"の間に競合がありました。

  • "Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed"が選択されていたため、 "Newtonsoft.Json、Version = 6.0.5.17707、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed"

その後、

  • Ctrl-Alt-OCtrl-Alt-O出力ウィンドウを作成する
  • ドリルダウンを検索するために「 選択されました 」を検索します。

...そして、はい、[診断]メッセージの詳細を見ている人には、この無知には、 6.xバージョンはすべて内部でAssembly Version 6.0.0.0 、つまりSemVer主なコンポーネントはアセンブリバージョンに入ります :)


明らかに、さまざまな原因があり、この問題の解決策がたくさんあります。 鉱山を混在させるために、以前はWebプロジェクトで直接参照されていたアセンブリ(System.Net.Http)をNuGetが管理するバージョンにアップグレードしました。 これにより、そのプロジェクト内の直接参照は削除されましたが、テストプロジェクトには依然として直接参照が含まれていました。 両方のプロジェクトをアップグレードしてNuGet管理アセンブリを使用すると、問題が解決されました。


私はNuGet Packagaesの管理からMicrosoft ASP.NET MVC nuget.orgをアンインストールし、再度インストールしました。 再インストール中に、かみそりのバージョンに関するすべての競合が解決されました。 それを試してみてください 。


私はこれをNuggetパッケージのWebプロジェクトにインストールするNewtonsoft Jsonを解決することができました


私はちょうどこの問題と、パッケージをnugetからローカルで参照されているdllに切り替えると問題に遭遇しました。 問題は、 app.config古いランタイムバインディングです。





visual-studio-express