dotnet / dotnet/msbuild

Custom loggers could make default loggers miss information.

Open
#9,121 3 comments 0 reactions 0 assignees View on GitHub
backlog needs-design Priority:2 triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

During investigation of #9098 we found a following design problem:
If
- any custom logger would be created without setting `IEventSource4.IncludeEvaluationPropertiesAndItems()`.
- And this logger would be added to use with the build-in MSBuild loggers.
- And MSBuild runs in multiple nodes.

Then we would miss evaluation items and properties in all the loggers.

Analysis:
Despite the name, `IncludeEvaluationPropertiesAndItems` does not control whether to include or not properties and items to log of the particular logger and rather has a meaning of a logger version. In fact, its presence means that properties and items are included in `ProjectEvaluationFinished` event for modern loggers and absence that they are included in `ProjectStarted` event for legacy loggers. So, if one of the attached loggers is legacy ( which is detected by missing IncludeEvaluationPropertiesAndItems), so for backwards compatibility all other modern loggers would not obtain properties in the event they expect, see [this commit](https://github.com/dotnet/msbuild/commit/794abcbb005017cf3a75850a9f001419bb47bd38).

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.