[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699F0RC7C5JM12MX8F4PD7D":3,"skill-same:01M699F0RC7C5JM12MX8F4PD7D":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M699F0RC7C5JM12MX8F4PD7D","msbuild-server",null,"Guide for using MSBuild Server to improve CLI build performance. Activate when developers report slow incremental builds from the command line, or when CLI builds are noticeably slower than IDE builds. Covers MSBUILDUSESERVER=1 environment variable for persistent server-based caching. Do not activate for IDE-based builds (Visual Studio already uses a long-lived process).","microsoft\u002Ftestfx","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699C71CJ91B5WZ3AXG3GG2M",1059,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmsbuild-server\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"msbuild server","msbuild","server","guide","when","for","studio","long","line","caching","visual","do","activate","build","cli","environment","command","improve","ide","visual studio","performance","2026-11-10 10:12:30",false,"---\nname: msbuild-server\ndescription: \"Guide for using MSBuild Server to improve CLI build performance. Activate when developers report slow incremental builds from the command line, or when CLI builds are noticeably slower than IDE builds. Covers MSBUILDUSESERVER=1 environment variable for persistent server-based caching. Do not activate for IDE-based builds (Visual Studio already uses a long-lived process).\"\nlicense: MIT\n---\n\n# MSBuild Server for CLI Caching\n\nUse the MSBuild Server to cache evaluation results across CLI builds, matching the performance advantage Visual Studio gets from its long-lived MSBuild process.\n\n## When to Use\n\n- Small incremental builds from CLI (`dotnet build`) are slower than expected\n- Developers notice that VS builds are faster than CLI builds for the same project\n- CI agents run many sequential builds of the same repo\n\n## When Not to Use\n\n- IDE-based builds (Visual Studio already uses a long-lived MSBuild process)\n- One-off builds where cold-start overhead is acceptable\n- Build correctness issues are suspected (disable the server to isolate the problem)\n\n## Inputs\n\n| Input | Required | Description |\n|-------|----------|-------------|\n| Shell context | No | The shell where the environment variable will be set (bash, PowerShell, or Windows persistent) |\n\n## Workflow\n\n### Step 1: Confirm CLI context\n\nVerify the developer is building from the command line (`dotnet build`), not from Visual Studio or another IDE. The MSBuild Server provides no benefit inside an IDE.\n\n### Step 2: Set the environment variable\n\n```bash\n# Bash \u002F CI\nexport MSBUILDUSESERVER=1\n\n# PowerShell\n$env:MSBUILDUSESERVER = \"1\"\n\n# Windows (persistent)\nsetx MSBUILDUSESERVER 1\n```\n\n### Step 3: Validate improvement\n\nRun two sequential builds of the same project and compare times:\n\n1. First build (cold): `dotnet build` -- server starts, no cache benefit\n2. Second build (warm): `dotnet build` -- should be noticeably faster\n\nThe most noticeable improvement is in repos with many projects or complex `Directory.Build.props` chains.\n\n## Validation\n\n- [ ] `MSBUILDUSESERVER=1` is set in the shell\n- [ ] Second sequential build is faster than the first\n- [ ] `dotnet build-server shutdown` followed by a rebuild confirms the server restarts cleanly\n\n## Common Pitfalls\n\n| Pitfall | Solution |\n|---------|----------|\n| Expecting improvement in Visual Studio | VS already uses long-lived MSBuild nodes; the server adds no benefit |\n| Build correctness issues after enabling | Run `dotnet build-server shutdown` to reset; if issues persist, disable the server |\n| Server process using unexpected memory | The server persists in background; shut down with `dotnet build-server shutdown` when idle |\n","# MSBuild Server for CLI Caching\n\nUse the MSBuild Server to cache evaluation results across CLI builds, matching the performance advantage Visual Studio gets from its long-lived MSBuild process.\n\n## When to Use\n\n- Small incremental builds from CLI (`dotnet build`) are slower than expected\n- Developers notice that VS builds are faster than CLI builds for the same project\n- CI agents run many sequential builds of the same repo\n\n## When Not to Use\n\n- IDE-based builds (Visual Studio already uses a long-lived MSBuild process)\n- One-off builds where cold-start overhead is acceptable\n- Build correctness issues are suspected (disable the server to isolate the problem)\n\n## Inputs\n\n| Input | Required | Description |\n|-------|----------|-------------|\n| Shell context | No | The shell where the environment variable will be set (bash, PowerShell, or Windows persistent) |\n\n## Workflow\n\n### Step 1: Confirm CLI context\n\nVerify the developer is building from the command line (`dotnet build`), not from Visual Studio or another IDE. The MSBuild Server provides no benefit inside an IDE.\n\n### Step 2: Set the environment variable\n\n```bash\n# Bash \u002F CI\nexport MSBUILDUSESERVER=1\n\n# PowerShell\n$env:MSBUILDUSESERVER = \"1\"\n\n# Windows (persistent)\nsetx MSBUILDUSESERVER 1\n```\n\n### Step 3: Validate improvement\n\nRun two sequential builds of the same project and compare times:\n\n1. First build (cold): `dotnet build` -- server starts, no cache benefit\n2. Second build (warm): `dotnet build` -- should be noticeably faster\n\nThe most noticeable improvement is in repos with many projects or complex `Directory.Build.props` chains.\n\n## Validation\n\n- [ ] `MSBUILDUSESERVER=1` is set in the shell\n- [ ] Second sequential build is faster than the first\n- [ ] `dotnet build-server shutdown` followed by a rebuild confirms the server restarts cleanly\n\n## Common Pitfalls\n\n| Pitfall | Solution |\n|---------|----------|\n| Expecting improvement in Visual Studio | VS already uses long-lived MSBuild nodes; the server adds no benefit |\n| Build correctness issues after enabling | Run `dotnet build-server shutdown` to reset; if issues persist, disable the server |\n| Server process using unexpected memory | The server persists in background; shut down with `dotnet build-server shutdown` when idle |\n",{"name":5,"license":15,"description":7},"main","f8f2bfd77819bb789d4736ce7db4a567a37fcf7e",".agents\u002Fskills\u002Fmsbuild-server",315,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 02:10:33",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add microsoft\u002Ftestfx --skill msbuild-server",{"tool":65,"command":66},"bunx","bunx skills add microsoft\u002Ftestfx --skill msbuild-server",{"tool":68,"command":69},"pnpm","pnpm dlx skills add microsoft\u002Ftestfx --skill msbuild-server","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmsbuild-server\u002FSKILL.md",true,[],[74,101,129,150,168,192],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":45},"01M70GYY0AV0JGMTHE2CN6TNYK","dotnet-breaking-changes","Use before changing .NET\u002FC# code whose callers you do not control: a NuGet library, or a repo with PublicAPI.Shipped\u002FUnshipped.txt, ApiCompat, multiple TargetFrameworks, InternalsVisibleTo, or generated (.g.cs) partials. Green builds miss silent breaks from optional parameters, parameter names, sealing, const values, nullability, and #if. USE FOR: \"without breaking existing callers\"; adding a public method, overload, optional parameter, or interface member to a shipped library; renaming a public method or an internal helper a friend assembly uses; consolidating duplicated logic; changing a signature, nullability, default, or attribute; adding a target framework; RS0016\u002FRS0017 or ApiCompat errors; \"is this PR breaking?\". For a rename, extract, or merge, also invoke csharp-refactoring. DO NOT USE FOR: an executable whose callers all live in one project; renaming a local variable or private member, even in a shipped library; formatting; framework\u002FSDK\u002FNuGet upgrades (use dotnet-upgrade).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fdotnet-breaking-changes\u002FSKILL.md",[],[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],"dotnet","dotnet breaking changes","changes","green","project","default","local","errors","interface","generated","upgrade","invoke","you","code","refactoring","merge","rename","library","live","assembly",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":45},"01M699HHE9DTZWAMPB1ZR7ZKSW","testfx-test-value-evidence","Apply the vendored test-value-evidence skill with TestFx toolchain, assertion, parallel-safety, packed-consumer, and review conventions. Use when implementing or reviewing behavior-changing TestFx PRs or commits, including source-only changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-test-value-evidence\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[111,112,113,114,115,116,117,118,119,120,121,122,123,28,124,125,83,126,127,128],"test","testfx test value evidence","test value evidence","evidence","value","review","parallel","toolchain","commits","implementing","prs","only","use","apply","with","behavior","Safety","conventions",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":45},"01M699HEYWH1B9XGNBFY8J2FZS","testfx-parallel-safety-preflight","Check concurrency and isolation before implementing or refactoring TestFx tests, lifecycle code, helpers, shared-state declarations, or production paths those tests exercise. Use before narrowing DoNotParallelize or ResourceLock, changing parallelization settings, or introducing asynchronous workers; repeat against the final diff.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-parallel-safety-preflight\u002FSKILL.md",[],[136,127,137,117,138,139,120,140,94,141,95,142,143,144,145,146,147,148,123,149],"testfx parallel safety preflight","preflight","shared","asynchronous","exercise","concurrency","paths","isolation","helpers","diff","parallelization","lifecycle","tests","workers",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":45},"01M699HC61ZV9GJ2C8JV03951G","testfx-localization-validation","Validate generated TestFx localization catalogs, resource IDs, placeholders and locked tokens. Use for RESX\u002FXLF changes, OneLoc PRs, localization build failures, duplicate targets or units, and orphaned translation entries.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-localization-validation\u002FSKILL.md",[],[157,158,159,160,161,162,29,163,164,121,90,123,165,166,83,167,37],"testfx localization validation","validation","localization","validate","translation","ids","tokens","entries","units","duplicate","targets",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":175,"publishedAt":45},"01M699H9J2NWQXE4BDT6R0FH7S","testfx-acceptance-validation","Validate TestFx shipping paths and capable CI execution using packed consumers, package\u002Fcache provenance, exact exits and artifacts, and selected-versus-executed test evidence. Use for acceptance regressions, package\u002FMSBuild\u002Flauncher\u002Fprotocol changes, or skipped-only CI results; not for unrelated unit-only or documentation changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-acceptance-validation\u002FSKILL.md",[174],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[176,177,158,111,25,114,178,179,180,122,181,123,182,183,184,185,186,187,188,189,190,191,142,29],"testfx acceptance validation","acceptance","launcher","ci","execution","package","cache","artifacts","provenance","documentation","unrelated","shipping","results","protocol","unit","ci results",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":198,"publishedAt":45},"01M699H70BB999BT4F627T1PHE","session-delivery-hygiene","Gate local-session scope, persistent delivery, live PR state, integration provenance, and owned cleanup. Use before implementing guidance changes, changing or pushing PR work, diagnosing package\u002Foutput mismatches, or handing off implementation.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsession-delivery-hygiene\u002FSKILL.md",[],[199,200,201,202,203,120,87,204,205,99,206,181,123,184,207,208,83,209,210,211],"session delivery hygiene","delivery","session","hygiene","scope","cleanup","work","pr","output","state","integration","guidance","gate"]