-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
I noticed that when .sln.metaproj is evaluated via ProjectInstance.LoadSolutionForBuild we are passing a valid submission ID but it is not being set on the BuildEventContext used for logging. So evaluation logging events end up having SubmissionId == -1, and thus the loggers registered with the MuxLogger in the IDE do not get the evaluation events.
This is the problematic constructor:
msbuild/src/Build/Instance/ProjectInstance.cs
Lines 499 to 503 in f7f0b19
| internal ProjectInstance(ProjectRootElement xml, IDictionary<string, string> globalProperties, string toolsVersion, ILoggingService loggingService, int visualStudioVersionFromSolution, ProjectCollection projectCollection, ISdkResolverService sdkResolverService, int submissionId) | |
| { | |
| BuildEventContext buildEventContext = new BuildEventContext(0, BuildEventContext.InvalidTargetId, BuildEventContext.InvalidProjectContextId, BuildEventContext.InvalidTaskId); | |
| Initialize(xml, globalProperties, toolsVersion, null, visualStudioVersionFromSolution, new BuildParameters(projectCollection), loggingService, buildEventContext, sdkResolverService, submissionId); | |
| } |
It is only being called in one place:
msbuild/src/Build/Construction/Solution/SolutionProjectGenerator.cs
Lines 994 to 1002 in f7f0b19
| var traversalInstance = new ProjectInstance( | |
| traversalProject, | |
| _globalProperties, | |
| explicitToolsVersionSpecified ? wrapperProjectToolsVersion : null, | |
| _loggingService, | |
| _solutionFile.VisualStudioVersion, | |
| new ProjectCollection(), | |
| _sdkResolverService, | |
| _submissionId); |
This constructor should be passing the submission Id to the BuildEventContext, but it just passes it on down.
Sample call stack:
Evaluator`4.Evaluate
ProjectInstance.Initialize
ProjectInstance..ctor
SolutionProjectGenerator.CreateTraversalInstance
SolutionProjectGenerator.CreateSolutionProject
SolutionProjectGenerator.Generate
SolutionProjectGenerator.Generate
ProjectInstance.GenerateSolutionWrapper
ProjectInstance.LoadSolutionForBuild
BuildManager.LoadSolutionIntoConfiguration
BuildManager.HandleNewRequest
BuildManager.<>c__DisplayClass95_0.<IssueBuildRequestForBuildSubmission>g__IssueBuildSubmissionToSchedulerImpl|1
BuildManager.IssueBuildRequestForBuildSubmission
BuildManager.ProcessWorkQueue
BuildManager.<BeginBuild>b__63_3