KirillOsenkov / MSBuildStructuredLog

A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values.
MIT License
1.46k stars 198 forks source link

Sometimes does not show properties under projects #488

Closed MarkKharitonov closed 3 years ago

MarkKharitonov commented 3 years ago

I have a logic that imports a targets file if a certain property is True. I can clearly see the targets are imported, but searching for the property under the project node returns nil. I know for sure the property is not globally set - it is determined from another targets file based on the csproj file contents.

Exhibit 1 image

This tells us the property IsUnitTestProject is indeed set to true.

Exhibit 2 image

The property only shows up under certain projects (but not the one I am interested in!) and only in the context of the restoration phase. This is when msbuild is invoked in a separate context (to the best of my limited understanding) and it presents a picture as if the property IsUnitTestProject is global. But it is not, which is easily proved by examining the top level solution node.

Exhibit 3 image

The property IsUnitTestProject is defined in Tests.props, which is clearly loaded under the project in question - see the next exhibit.

Exhibit 4 image

The binary log is attached.

P.S. It would be nice if we could use quotes when searching for $import to indicate the project name exactly.

msbuild.zip

KirillOsenkov commented 3 years ago

Good news, this will be fixed in MSBuild 16.10 with this PR: https://github.com/dotnet/msbuild/pull/6287

Filed https://github.com/KirillOsenkov/MSBuildStructuredLog/issues/489 for the $import quotes support

KirillOsenkov commented 3 years ago

Here's a screenshot: you can tell whether a given project has Properties and Items information by the presence of the green TargetFramework label: https://github.com/dotnet/msbuild/pull/6287#issuecomment-806178885

We can infer the target framework by reading the TargetFramework(s) property.

MarkKharitonov commented 3 years ago

This is excellent. Looking forward for that.

KirillOsenkov commented 3 years ago

Try out Visual Studio 16.10 preview 3.