Support WhereRefBind log entries
See original GitHub issueI’ve been using Fusion++ today, it’s a great tool!
I noticed that it looks like it may not support all entries. Specifically if I run fuslogvw.exe and specify log all binds to disk, I may get files with this format: WhereRefBind!Host=(LocalMachine)!FileName=(Microsoft.Build.NuGetSdkResolver.dll).htm
These don’t seem available in Fusion++.
To get a repro:
git clone https://github.com/dotnet/msbuild
(assuming you cloned into C:\MSBuild), checkout main as of 2021-03-24 (e.g. https://github.com/dotnet/msbuild/commit/bf0b0c52351d2034daec62b74c49f67def7fe739)build -bl /p:CreateBootstrap=true
C:\msbuild\artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe /r C:\temp\net472\net472.csproj
where net472.csproj is any dotnet C# project. Note /r is important as the codepaths involve NuGet
Run step 3 under fuslogvw and Fusion++ and compare the results.
https://github.com/dotnet/msbuild/issues/6289 is the issue we’re investigating. Looks like we first load an assembly using Assembly.LoadFrom(), which loads it into the LoadFrom context, then we load the same .dll into the default load context, so we have two copies of the assembly loaded from two different codepaths, then we get the exception.
Issue Analytics
- State:
- Created 2 years ago
- Reactions:2
- Comments:10 (4 by maintainers)
Top GitHub Comments
WhereRef binds are situations where the assembly name hasn’t been set; think Assembly.LoadFrom(“foo.dll”).
Version 1.4 was just released 🎉
Thank you for the feedback, Kirill.