この記事では、MSB3277エラー コードについて説明します。
メッセージ テキスト
MSB3277: Found conflicts between different versions of 'value' that could not be resolved.
説明
このエラーは、同じプロジェクトのビルドで同じ依存アセンブリの複数のバージョンが参照されている場合に、ビルド中に発生します。 .NET ビルドでは、他の参照アセンブリを通じて直接または間接的に参照されるすべてのアセンブリを同じバージョンに解決する必要があります。 同じバイナリをビルドするときに、同じアセンブリの 2 つの異なるバージョンと競合するバージョンを参照することはできません。 ResolveAssemblyReference タスクは、このエラーを出力します。 タスクは、参照されているすべてのアセンブリと、それらのアセンブリによって間接的に参照されるすべてのアセンブリなどを検査します。 タスクは、すべてのアセンブリ参照が解決されるまで、プロセスを通じて動作します。
エラーを診断する
エラーを診断するには、最初に -verbosity:diag
コマンド ライン スイッチを使用して診断ログ出力を有効にしてから、完全な診断出力で MSBuild ログ ファイルを確認します。 大規模なプロジェクトで出力ログを長くする場合は、バイナリ ログ -bl
コマンド ライン スイッチと MSBuild 構造化ログ ビューアー を使用して、出力をより簡単に表示することを検討してください。
MSBuild 16.x 以降では、競合している特定のアセンブリ バージョンがログ ファイルに書き込まれます。 以前のバージョンの MSBuild では、コンテンツはログ ファイルに追加されません。 代わりに、アセンブリの依存関係チェーンに従って、競合する参照を見つけます。 プロジェクトが参照する各アセンブリと、最初のアセンブリが参照するアセンブリなどを確認します。 競合するアセンブリ バージョンを特定するまで、このプロセスに従います。
診断ログでは、競合している特定のアセンブリ バージョンと競合の理由を特定する必要があります。 たとえば、assembly1.dllへの参照。バージョン x を参照assembly2.dll、バージョン y も参照assembly2.dll。 MSBuild では、アセンブリに使用するバージョンを特定できません。
次の例は、2 つのバージョンの StreamJsonRpc
間の競合を示す診断ログからの抜粋です。
There was a conflict between "StreamJsonRpc, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "StreamJsonRpc, Version=2.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
"StreamJsonRpc, Version = 2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "StreamJsonRpc, Version=2.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.
References which depend on "StreamJsonRpc, Version = 2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Users\user\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll].
C:\Users\user\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll
Project file item includes which caused reference "C:\Users\user\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll".
C:\Users\user\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll
C:\Users\user\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll
Project file item includes which caused reference "C:\Users\user\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll".
C:\Users\user\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.shell.15.0\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.15.0.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.datadesign.common\16.0.28321-alpha\lib\net472\Microsoft.VisualStudio.DataDesign.Common.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.projectsystem\16.2.133-pre\lib\net472\Microsoft.VisualStudio.ProjectSystem.VS.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.shell.design\16.0.28316-pre\lib\net45\Microsoft.VisualStudio.Shell.Design.dll
C:\Users\user\.nuget\packages\microsoft.vsdesigner\16.0.28321-alpha\lib\net472\Microsoft.VSDesigner.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll
Project file item includes which caused reference "C:\Users\user\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll".
C:\Users\user\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.editor\16.0.428\lib\net472\Microsoft.VisualStudio.Editor.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll
Project file item includes which caused reference "C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll".
C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll
Project file item includes which caused reference "C:\Users\user\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll".
C:\Users\user\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.imaging\16.4.29317.144\lib\net472\Microsoft.VisualStudio.Imaging.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.shell.15.0\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.15.0.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.datadesign.common\16.0.28321-alpha\lib\net472\Microsoft.VisualStudio.DataDesign.Common.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.projectsystem\16.2.133-pre\lib\net472\Microsoft.VisualStudio.ProjectSystem.VS.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.shell.design\16.0.28316-pre\lib\net45\Microsoft.VisualStudio.Shell.Design.dll
C:\Users\user\.nuget\packages\microsoft.visualstudio.shell.framework\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.Framework.dll
C:\Users\user\.nuget\packages\microsoft.vsdesigner\16.0.28321-alpha\lib\net472\Microsoft.VSDesigner.dll
References which depend on "StreamJsonRpc, Version = 2.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [].
MSBuildDebugEngine
環境変数を 1 に設定して、使用可能なすべてのログを取得することもできます。 詳細については、「 .NET Framework の MSBuild のビルド - ログ」を参照してください。
解決策
この問題を解決する方法は、プロジェクトの構成とアセンブリの依存関係の要件によって異なります。
- NuGet パッケージまたは SDK をアップグレードまたは再インストールして、ディスク上のアセンブリのバージョンを更新します。
- Visual Studio 用パッケージ マネージャー コンソールの
Update-Package -reinstall
コマンドを使用して、すべてのパッケージを最新バージョンに更新します。 詳細については、「 パッケージの再インストールと更新」を参照してください。 - ディスク上の参照アセンブリの複数のバージョンを持つプロジェクトの場合は、インストールされている競合するアセンブリの最新バージョンを参照するようにプロジェクトまたは依存関係を更新します。 グローバル アセンブリ キャッシュ (GAC) は、アセンブリの特定のバージョンを参照しているが、GAC によってオーバーライドされる場合に、競合の原因になる可能性もあります。 詳細については、「 グローバル アセンブリ キャッシュ」を参照してください。
外部コンポーネント
競合が Microsoft 以外のコンポーネントにある場合、プロジェクトで使用している競合するアセンブリのバージョンでコンポーネントがサポートされていない可能性があります。 他のコンポーネントのプロバイダーに、互換性のある更新バージョンが提供されているかどうかを確認します。 修正プログラムが利用できない場合は、他のコンポーネントが使用するバージョンと一致するように、参照している競合するアセンブリのバージョンをダウングレードすることがソリューションである可能性があります。
バインド リダイレクト
場合によっては、プロジェクトでバインド リダイレクトを指定したり、必要に応じて呼び出しで指定したバージョンのアセンブリを強制的に使用したりすることがあります。 詳細については、「 アセンブリ バージョンのリダイレクト」を 参照して、バインド リダイレクトのしくみを理解してください。
Visual Studio またはプロジェクト ファイルの設定では、バインドの自動リダイレクトを有効または無効にすることができます。 詳細については、「 バインディングの自動リダイレクトを有効または無効にする」を参照してください。 設定を確認し、プロジェクトでバインド リダイレクトを使用する方法と理由を理解していることを確認します。
複数のバージョンのアセンブリが読み込まれました
高度なシナリオでは、プロジェクトで同じアセンブリの複数のバージョンが意図的に必要になる場合があります。 特別な手法を使用して、通常のアセンブリ読み込みプロセスをオーバーライドして目標を達成できます。 詳細については、「 アセンブリの読み込みを解決する」を参照してください。 アセンブリ読み込みのベストプラクティスガイドを理解し、それに従ってください。
アセンブリ参照でのエラーの解決に関するガイドについては、「アセンブリ参照の トラブルシューティング 」および 「ランタイムがアセンブリを検索する方法」を参照してください。
対象
MSBuild のすべてのバージョン