Conversation
donnie-msft
left a comment
There was a problem hiding this comment.
Did/will you be modifying the release playbook to include these new symbols?
| Projects="@(SolutionProjectsWithoutVSIX)" | ||
| Targets="GetSymbolsToIndex"> | ||
| Targets="GetSymbolsToIndex" | ||
| Properties="NoBuild=true;"> |
There was a problem hiding this comment.
May I know what's this for? Thanks.
There was a problem hiding this comment.
If you run symbols.proj locally, you'll see that it re-runs ilmerge on nuget.exe, and probably the NuGet.Build.Tasks.Pack.dll. This means, the exe, and symbols for these components are regenerated. I don't know what heuristics the debugger uses to determine the symbols "key" to get from the server, but if the second ilmerge changes the exe and pdb too much, then the symbols we publish will not match the binaries published, and noone will be able to debug those binaries.
So, by telling the .NET SDK not to rebuild, it avoids our ilmerge target from running, and we can publish the pdbs that were generated at the same time the published binaries were generated.
An alternative, which we should eventually do anyway, is improve our ilmerge task to use msbuild's incremental build to avoid needlessly ilmerging so many times. When running builds locally, or if you look carefully at our CI logs, you'll see we actually ilmerge nuget.exe multiple times, because msbuild doesn't know how to determine if the previous copy is already up-to-date. THis is a particular risk for signed assemblies, because if we ilmerege a new nuget.exe and overwrite a signed nuget.exe, then we lose the authenticode signature.
Bug
Related: https://github.com/nuget/client.engineering/issues/338
Regression: No
Fix
Details: Save RTM symbols on file share, so they can be published during the release process.
Testing/Validation
Tests Added: No
Reason for not adding tests: CI build script change
Validation: