dotnet / dotnet/msbuild

RAR conflict logging logs post-binding-redirect assembly versions

Open
#4,757 1 comment 5 reactions 0 assignees View on GitHub
Area: Debuggability Area: Task: Resolve Assembly References (RAR) triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 13h
Merged PRs (30d)
133

Description

`ResolveAssemblyReferences` logs information about what references were involved in the leadup to a conflict

```
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". (TaskId:25)
"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. (TaskId:25)
References which depend on "StreamJsonRpc, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Users\raines\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll]. (TaskId:25)
C:\Users\raines\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll (TaskId:25)
Project file item includes which caused reference "C:\Users\raines\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll". (TaskId:25)
C:\Users\raines\.nuget\packages\streamjsonrpc\2.1.74\lib\netstandard2.0\StreamJsonRpc.dll (TaskId:25)
References which depend on "StreamJsonRpc, Version=2.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" []. (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll (TaskId:25)
Project file item includes which caused reference "C:\Users\raines\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll". (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.shell.15.0\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.15.0.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll (TaskId:25)
S:\project-system\artifacts\Debug\bin\Dlls\Microsoft.VisualStudio.ProjectSystem.Managed.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.projectsystem\16.2.133-pre\lib\net472\Microsoft.VisualStudio.ProjectSystem.VS.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.shell.design\16.0.28316-pre\lib\net45\Microsoft.VisualStudio.Shell.Design.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.vsdesigner\16.0.28321-alpha\lib\net472\Microsoft.VSDesigner.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll (TaskId:25)
Project file item includes which caused reference "C:\Users\raines\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll". (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.editor\16.0.428\lib\net472\Microsoft.VisualStudio.Editor.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll (TaskId:25)
S:\project-system\artifacts\Debug\bin\Dlls\Microsoft.VisualStudio.ProjectSystem.Managed.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll (TaskId:25)
Project file item includes which caused reference "C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll". (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll (TaskId:25)
S:\project-system\artifacts\Debug\bin\Dlls\Microsoft.VisualStudio.ProjectSystem.Managed.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll (TaskId:25)
Project file item includes which caused reference "C:\Users\raines\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll". (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.imaging\16.4.29317.144\lib\net472\Microsoft.VisualStudio.Imaging.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll (TaskId:25)
S:\project-system\artifacts\Debug\bin\Dlls\Microsoft.VisualStudio.ProjectSystem.Managed.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.shell.15.0\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.15.0.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.projectsystem\16.2.133-pre\lib\net472\Microsoft.VisualStudio.ProjectSystem.VS.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.shell.design\16.0.28316-pre\lib\net45\Microsoft.VisualStudio.Shell.Design.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.visualstudio.shell.framework\16.4.29318.21\lib\net472\Microsoft.VisualStudio.Shell.Framework.dll (TaskId:25)
C:\Users\raines\.nuget\packages\microsoft.vsdesigner\16.0.28321-alpha\lib\net472\Microsoft.VSDesigner.dll (TaskId:25)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3277: Found conflicts between different versions of "StreamJsonRpc" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. [S:\project-system\src\Microsoft.VisualStudio.ProjectSystem.Managed.VS\Microsoft.VisualStudio.ProjectSystem.Managed.VS.csproj]
```

But that logging is unclear, because most of those assemblies _didn't_ have a reference to version `2.2.0.0` of `StreamJsonRpc`:

```sh-session
$ ildasm /text C:\Users\raines\.nuget\packages\microsoft.servicehub.framework\2.0.72\lib\netstandard2.0\Microsoft.ServiceHub.Framework.dll | rg -A4 "assembly extern StreamJsonRpc" .assembly extern StreamJsonRpc
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:1:0:0
}
$ ildasm /text C:\Users\raines\.nuget\packages\microsoft.visualstudio.language\16.0.428\lib\net472\Microsoft.VisualStudio.Language.dll | rg -A4 "assembly extern StreamJsonRpc" .assembly extern StreamJsonRpc
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 1:3:0:0
}
$ ildasm /text C:\Users\raines\.nuget\packages\microsoft.visualstudio.languageservices\3.2.0-beta4-19359-03\lib\net472\Microsoft.VisualStudio.LanguageServices.dll | rg -A4 "assembly extern StreamJsonRpc" .assembly extern StreamJsonRpc
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:0:0:0
}
$ ildasm /text C:\Users\raines\.nuget\packages\microsoft.visualstudio.utilities\16.4.29317.144\lib\net46\Microsoft.VisualStudio.Utilities.dll | rg -A4 "assembly extern StreamJsonRpc" .assembly extern StreamJsonRpc
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:2:0:0
}
```

Instead, they had references that _RAR considered unifiable_ to the `2.2.0.0` version.

To really debug this problem, it would be nice to see the _actual_ versions referenced, _plus_ whether they were unifiable or not. In this case the error is that the direct reference is less than the highest indirect reference. Maybe we could just . . . say that?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.