dotnet / dotnet/msbuild

msbuild should output "why built" or "why out-of-date" messages at Normal verbosity

Open
#4,061 2 comments 7 reactions 0 assignees View on GitHub
triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

Currently, to get msbuild to output messages explaining why targets are out of date and why a project needed to build requires the user to set log verbosity to the highest level: diagnostic.

This is frequently the only reason one needs to turn on diagnostic verbosity. I would suggest promoting 'why out-of-date' messages to Normal verbosity. At the very least Detailed.

Example:

```
3>------ Up-To-Date check: Project: corebuild_buildlayers_tests, Configuration: Debug x64 ------
3>Project is not up-to-date: build input 'c:\repos\corebuild\buildtools\src\corebuild\dbb\buildlayers\tests\testdata\fullbuildlayers.json' was modified after the last build finished.
```

I turned on diagnostic mode so that I could see the latter of these two lines. However, diagnostic logging added 24940 other lines to the output. In normal mode, 25 lines are logged. In minimal mode, 2 lines. So in order to see that one additional "not up-to-date" line on top of normal mode, I had to increase verbosity by 1000x. By default I'm in Minimal mode, in which case that one additional line require scaling up by 12000x.

"Why did this project build" is probably the single most important thing to know about the project, after the result. As such, it can even be argued that it's important enough for Minimal mode. Maybe it deserves an orthogonal setting of its own.

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.