From cd2bfffe9bbee6f15d4e98d20a0f47eb0584da0c Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Wed, 4 Feb 2026 14:27:08 -0600 Subject: [PATCH 1/2] Skill to test changes using just-built MSBuild A standard part of the inner developer loop in this repo is to build MSBuild with a change, then run it against a repro project or projects to validate that MSBuild is generally working and the change affects the behavior you expect. Adding a skill to (hopefully!) make that crystal clear to agents. --- .github/skills/use-bootstrap-msbuild/SKILL.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 .github/skills/use-bootstrap-msbuild/SKILL.md diff --git a/.github/skills/use-bootstrap-msbuild/SKILL.md b/.github/skills/use-bootstrap-msbuild/SKILL.md new file mode 100644 index 00000000000..7725dc8e89c --- /dev/null +++ b/.github/skills/use-bootstrap-msbuild/SKILL.md @@ -0,0 +1,83 @@ +--- +name: use-bootstrap-msbuild +description: Guide for testing bug reproductions against locally-built MSBuild. Use this when you have a repro project and want to verify a fix works before submitting a PR. +--- + +# Testing Bug Reproductions with Bootstrap MSBuild + +This skill guides you through testing a bug reproduction project against your locally-built MSBuild to verify a fix. + +## Overview + +After making changes to MSBuild, you need to test them against a repro project. The "bootstrap" is a self-contained MSBuild installation built from your local changes. It includes all dependencies needed to build real projects. + +## Step 1: Build MSBuild with Bootstrap + +Build MSBuild to create the bootstrap directory: + +```powershell +# Windows +.\build.cmd + +# Unix/macOS +./build.sh +``` + +This creates the bootstrap at `artifacts\bin\bootstrap\` with your changes. + +Rerun this after making any code change. If run in the default mode, there may be + +## Step 2: Run Your Repro Project + +### .NET Core / .NET SDK Projects + +Use the bootstrap `dotnet` CLI directly (preferred): + +```powershell +# Windows +artifacts\bin\bootstrap\core\dotnet.exe build +``` + +```bash +# Unix/macOS +./artifacts/bin/bootstrap/core/dotnet build +``` + +All of the usual command line arguments should work, incluing `-bl` to create binlogs. + +### .NET Framework Projects + +If the problem is specific to the .NET Framework `MSBuild.exe` that is used in Visual Studio, and you're running on Windows, you can use the bootstrap MSBuild.exe directly: + +```powershell +artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe +``` + +**Note**: The .NET Framework bootstrap output will only be complete when built on Windows using `MSBuild.exe`. + +### Changes not reflected + +1. Verify bootstrap was rebuilt: check `artifacts\bin\bootstrap\core\sdk\*\MSBuild.dll` timestamp +2. Kill any lingering MSBuild server processes: + ```powershell + ./artifacts/bin/bootstrap/core/dotnet build-server shutdown + # Or use the helper function after sourcing msbuild-build-env.ps1 + killdotnet + ``` + +### Repro works with bootstrap but not with installed MSBuild + +Your fix is working! The repro uses your local changes while the installed MSBuild has the bug. + +## Quick Reference + +| Scenario | Command | +|----------|---------| +| Build bootstrap | `.\build.cmd` | +| .NET Core repro | `artifacts\bin\bootstrap\core\dotnet.exe build ` | +| .NET Framework repro | `artifacts\bin\bootstrap\net472\MSBuild\Current\Bin\MSBuild.exe ` | + +## See Also + +- [Bootstrap Documentation](https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Bootstrap.md) +- [Building and Debugging Guide](https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Building-Testing-and-Debugging-on-Full-Framework-MSBuild.md) From bfaa627bdbbb5cd0adfb7563205d4d1bbb054799 Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Wed, 4 Feb 2026 15:11:10 -0600 Subject: [PATCH 2/2] copilot review fixes --- .github/skills/use-bootstrap-msbuild/SKILL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/skills/use-bootstrap-msbuild/SKILL.md b/.github/skills/use-bootstrap-msbuild/SKILL.md index 7725dc8e89c..2e49e75fddc 100644 --- a/.github/skills/use-bootstrap-msbuild/SKILL.md +++ b/.github/skills/use-bootstrap-msbuild/SKILL.md @@ -25,7 +25,7 @@ Build MSBuild to create the bootstrap directory: This creates the bootstrap at `artifacts\bin\bootstrap\` with your changes. -Rerun this after making any code change. If run in the default mode, there may be +Rerun this after making any code change. If run in the default mode, there may be some errors on subsequent builds about locked files (due to MSBuild worker node processes lingering). If so, run `./artifacts/bin/bootstrap/core/dotnet build-server shutdown`. ## Step 2: Run Your Repro Project @@ -43,7 +43,7 @@ artifacts\bin\bootstrap\core\dotnet.exe build ./artifacts/bin/bootstrap/core/dotnet build ``` -All of the usual command line arguments should work, incluing `-bl` to create binlogs. +All of the usual command line arguments should work, including `-bl` to create binlogs. ### .NET Framework Projects