π§ MSBuild File Quality Report β 2026-08-23
Files reviewed: 22
Findings: π΄ 3 errors Β· π‘ 1 warning Β· π΅ 0 suggestions
π΄ Errors
src/Microsoft.TestPlatform.Build/Microsoft.TestPlatform.targets
- Rule B-2 β Unquoted condition expressions in property defaults
- Lines: 15β16
- Current: ```xml
(VSTestTaskAssemblyFile Condition="$(VSTestTaskAssemblyFile) == ''")Microsoft.TestPlatform.Build.dll(/VSTestTaskAssemblyFile)
(VSTestConsolePath Condition="$(VSTestConsolePath) == ''")...(/VSTestConsolePath)
- Suggested: ```xml
Microsoft.TestPlatform.Build.dll
...
- Rule B-2 β Unquoted property references in
CallTarget conditions
- Lines: 33, 36
- Current: ```xml
(CallTarget Targets="_VSTestConsole" Condition="$(_MSBUILDTLENABLED) == '0' OR !$(VsTestUseMSBuildOutput) OR $(MSBUILDENSURESTDOUTFORTASKPROCESSES) == '1'" /)
(CallTarget Targets="_VSTestMSBuild" Condition="$(_MSBUILDTLENABLED) == '1' AND $(VsTestUseMSBuildOutput)" /)
- Suggested: ```xml
- Rule B-2 β Unquoted boolean negation in
CallTarget condition
- Lines: 45
- Current: ```xml
(CallTarget Condition="!$(VSTestNoBuild)" Targets="BuildProject" /)
- Suggested: ```xml
π‘ Warnings
src/package/Microsoft.CodeCoverage/Microsoft.CodeCoverage.targets
- Rule A-3 β Target
CopyTraceDataCollectorArtifacts (line 17) performs file copies but declares no Inputs/Outputs, so it reruns on every build.
- Lines: 17β25
- Suggested: Add
Inputs="@(TraceDataCollectorArtifacts)" and Outputs with the destination paths, or use SkipUnchangedFiles="true" on the Copy task (already default) together with explicit Inputs/Outputs on the target.
Files reviewed without findings (18)
- Directory.Build.props
- Directory.Build.targets
- eng/AfterSolutionBuild.targets
- eng/Analyzers.props
- eng/PublishForPackaging.targets
- eng/Publishing.props
- eng/Signing.props
- eng/Version.Details.props
- eng/Versions.props
- playground/Directory.Build.props
- samples/Directory.Build.props
- src/package/Directory.Build.props
- src/package/Microsoft.CodeCoverage/Microsoft.CodeCoverage.props
- src/package/Microsoft.NET.Test.Sdk/Microsoft.NET.Test.Sdk.props
- src/package/Microsoft.NET.Test.Sdk/Microsoft.NET.Test.Sdk.targets (both netcoreapp and netfx variants)
- src/package/Microsoft.TestPlatform.TestHost/Microsoft.TestPlatform.TestHost.props
- src/package/Microsoft.TestPlatform.TestHost/Microsoft.TestPlatform.TestHost.targets
- test/Directory.Build.props
- test/TestAssets/Directory.Build.props
- test/TestAssets/Directory.Build.targets
Reference
This review applies the rule catalog defined in
.github/agents/msbuild-reviewer.agent.md.
Generated by MSBuild Quality Review on 2026-08-23.
Generated by MSBuild Quality Review Β· 87.6 AIC Β· β 6.05 AIC Β· β 5.5K Β· β·
π§ MSBuild File Quality Report β 2026-08-23
Files reviewed: 22
Findings: π΄ 3 errors Β· π‘ 1 warning Β· π΅ 0 suggestions
π΄ Errors
src/Microsoft.TestPlatform.Build/Microsoft.TestPlatform.targets
(VSTestTaskAssemblyFile Condition="$(VSTestTaskAssemblyFile) == ''")Microsoft.TestPlatform.Build.dll(/VSTestTaskAssemblyFile)
(VSTestConsolePath Condition="$(VSTestConsolePath) == ''")...(/VSTestConsolePath)
Microsoft.TestPlatform.Build.dll
...
CallTargetconditions(CallTarget Targets="_VSTestConsole" Condition="$(_MSBUILDTLENABLED) == '0' OR !$(VsTestUseMSBuildOutput) OR $(MSBUILDENSURESTDOUTFORTASKPROCESSES) == '1'" /)
(CallTarget Targets="_VSTestMSBuild" Condition="$(_MSBUILDTLENABLED) == '1' AND $(VsTestUseMSBuildOutput)" /)
CallTargetcondition(CallTarget Condition="!$(VSTestNoBuild)" Targets="BuildProject" /)
π‘ Warnings
src/package/Microsoft.CodeCoverage/Microsoft.CodeCoverage.targets
CopyTraceDataCollectorArtifacts(line 17) performs file copies but declares noInputs/Outputs, so it reruns on every build.Inputs="@(TraceDataCollectorArtifacts)"andOutputswith the destination paths, or useSkipUnchangedFiles="true"on theCopytask (already default) together with explicitInputs/Outputson the target.Files reviewed without findings (18)
Reference
This review applies the rule catalog defined in
.github/agents/msbuild-reviewer.agent.md.Generated by MSBuild Quality Review on 2026-08-23.