Closed MarkKharitonov closed 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
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.
This is excellent. Looking forward for that.
Try out Visual Studio 16.10 preview 3.
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
This tells us the property
IsUnitTestProject
is indeed set totrue
.Exhibit 2
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
The property
IsUnitTestProject
is defined in Tests.props, which is clearly loaded under the project in question - see the next exhibit.Exhibit 4
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