Files
YuliiaKovalova 14346ff3b2 Enrich build-perf-diagnostics skill with MSBuild team and community insights (#342)
* Enrich build-perf-diagnostics skill with MSBuild team and community insights

Additions (pure knowledge, no MCP dependency):
- RAR: dotnet/msbuild#2015 context, DisableTransitiveProjectReferences, ReferenceOutputAssembly
- Copy tasks: SkipCopyUnchangedFiles, --artifacts-path, Copy batching (dotnet/msbuild#12884)
- Dev Drive (ReFS): copy-on-write + reduced Defender scans, OrchardCore 7257 Copy tasks benchmark
- Evaluation: NuGetSdkResolver 180-400ms overhead (dotnet/msbuild#4025), EnableDefaultItems
- NuGet: RestoreUseStaticGraphEvaluation (20s+ savings in large builds)
- Project graph shape: wide vs deep (40% faster clean, 20% faster incremental)
- MSBuild Server: MSBUILDUSESERVER=1 for CLI caching
- Inline task overhead: 1s vs 3ms (RoslynCodeTaskFactory vs compiled)
- Misleading ResolveProjectReferences time (dotnet/msbuild#3135)
- Incrementality anti-patterns (dotnet/msbuild#13206)
- Impact categorization (HIGH/MEDIUM/QUICK WINS)
- Quick Wins: expanded to 15 items (from 7)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix minor issues from review comments

- Fix missing closing XML tag for CreateHardLinksForCopyFilesToOutputDirectoryIfPossible in Quick Wins checklist
- Clarify confusing Copy task batching wording per reviewer feedback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Trim skill to reduce token overhead

Remove standalone sections (MSBuild Server, Inline Tasks,
ResolveProjectReferences, Incrementality Anti-patterns) that add
~1400 extra tokens without benefiting the evaluated scenario.
Consolidate Quick Wins checklist accordingly.

These sections can be contributed as separate skills in follow-up PRs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add separate skills for MSBuild server, inline tasks, and ResolveProjectReferences

Extract content removed from build-perf-diagnostics into standalone skills
to keep each skill focused and avoid token budget bloat:

- msbuild-server: MSBUILDUSESERVER=1 for CLI incremental caching
- inline-task-overhead: RoslynCodeTaskFactory ~1s overhead vs ~3ms compiled
- resolve-project-references: misleading Target Performance Summary time
  (dotnet/msbuild#3135), guides users to Task Performance Summary instead

Incrementality anti-patterns content was not extracted as a separate skill
because the existing incremental-build skill already covers that area.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add github.com/dotnet/msbuild to known-domains.txt

Required by reference scanner for MSBuild issue links in
build-perf-diagnostics and resolve-project-references skills.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Replace full dotnet/msbuild URLs with shorthand notation

The reference scanner reads known-domains.txt from upstream main,
not from the PR branch. Use shorthand 'dotnet/msbuild#NNNN' format
(consistent with the rest of the file) instead of full URLs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review comments and fix reference scanner errors

- Remove https://aka.ms/devdrive URLs that trigger reference scanner
- Soften unsourced benchmark claims (OrchardCore Copy tasks, 20s+
  restore savings, 40%/20% graph shape improvements) per reviewer
  feedback to use workload-dependent language instead

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add eval tests for new skills; remove inline-task-overhead

Add eval.yaml and test fixtures for msbuild-server and
resolve-project-references skills:
- msbuild-server: tests CLI build perf scenario with developer report
- resolve-project-references: tests misleading target perf summary
  with multi-project setup and perf report

Remove inline-task-overhead skill: failed 3 evaluation iterations
(avg +2.7%) because the baseline LLM already knows about
RoslynCodeTaskFactory overhead — the skill doesn't add enough
unique value to meet the 10% improvement threshold.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Address review comments

- Add caveat that DisableTransitiveProjectReferences may require
  adding direct references for consumed types
- Fix escaped quotes in Quick Wins RunAnalyzers checklist item
- Add OutputType=Exe and Main entry point to msbuild-server fixture
- Change 'solution' to 'project' in resolve-project-references report
- Trim trailing spaces in developer-report.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Restore accidentally removed known-domains.txt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix remaining review comments

- Quote -flp argument in resolve-project-references bash example
  to handle semicolons in POSIX shells
- Format LibA/Class1.cs and LibB/Class1.cs across multiple lines
  for consistency with other test fixtures
- Rename msbuild-server/Program.cs to Calculator.cs to match content

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 15:55:44 +01:00
..