Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1082 commits
Select commit Hold shift + click to select a range
f88cc12
Address TODOs in MTP pipe protocol handlers (#50630)
Evangelink May 28, 2026
9cfc49f
Address PR review feedback
May 28, 2026
46994e4
Address testfx expert review (rounds 2-3) for MTP pipe protocol
Evangelink May 28, 2026
eac5e1b
Normalize GenAPI member spacing (#54458)
ViktorHofer May 28, 2026
c116837
Re-enable dotnet test tests on macOS ARM64 (#49665)
Evangelink May 28, 2026
c728881
Show currently running tests in dotnet test MTP output (#49712)
Evangelink May 28, 2026
068be59
Address PR review: ToLowerInvariant, IsNullOrWhiteSpace for required …
Evangelink May 28, 2026
7b7e3ad
Merge branch 'main' into dev/amauryleve/mtp-ipc-sync
Evangelink May 28, 2026
cae72c4
Merge branch 'main' into dev/amauryleve/test-modules-trim-and-exclude
Evangelink May 28, 2026
d9e0d9d
Address TODOs in MTP pipe protocol handlers (#50630) (#54483)
Evangelink May 28, 2026
ef09193
Merge origin/main and regenerate XLF for TargetFrameworkEmpty
Copilot May 28, 2026
5383adb
Merge branch 'main' into dev/amauryleve/fix-49665-dotnet-test-macos-a…
Evangelink May 28, 2026
0b35579
Add --use-current-runtime / --ucr support to dotnet test (MTP)
May 28, 2026
a035082
Disable WPF publish tests blocked by dotnet/wpf#11651
nagilson May 28, 2026
5aa354d
Add AOT tests for NativeAOT CLI entry point (#54297)
NikolaMilosavljevic May 28, 2026
73d7c1c
Backport gzip I/O retry logic and redirected-input console guard to r…
marcpopMSFT May 28, 2026
5014f74
[automated] Merge branch 'release/10.0.4xx' => 'main' (#54423)
github-actions[bot] May 28, 2026
367c4d8
Fix SWA baseline tests: use ${ProjectPath} prefix for OriginalItemSpe…
nagilson May 28, 2026
7b34829
Merge branch 'main' into dev/amauryleve/fix-keynotfound-assemblyrunco…
Evangelink May 29, 2026
3e956b0
Merge branch 'main' into dev/amauryleve/test-ucr-mtp
Evangelink May 29, 2026
999ad52
Merge branch 'main' into dev/amauryleve/show-active-tests
Evangelink May 29, 2026
8b09e8f
Address PR review: gate active-test tracking on effective progress ca…
Evangelink May 29, 2026
85bfb45
Merge branch 'main' into dev/amauryleve/test-modules-trim-and-exclude
Evangelink May 29, 2026
7192ccc
Merge branch 'main' into dev/amauryleve/dotnet-test-runner-env-var
Evangelink May 29, 2026
83e0713
Merge branch 'main' into dev/amauryleve/mtp-ipc-sync
Evangelink May 29, 2026
622add7
Fix KeyNotFoundException in TerminalTestReporter.AssemblyRunCompleted…
Evangelink May 29, 2026
056dfbc
Fix GenAPI omitting explicitly implemented interface events (#54492)
ViktorHofer May 29, 2026
0c06be5
File-based apps: support `#:include .dll` by default (#54396)
jjonescz May 29, 2026
69f55b5
Reset files to main
github-actions[bot] May 29, 2026
013df70
Merge branch 'main' of https://github.com/dotnet/sdk into merge/relea…
DonnaChen888 May 29, 2026
d4c96b4
Improve handshake failure visibility in dotnet test
Evangelink May 29, 2026
4721eda
Merge branch 'main' into dev/amauryleve/test-modules-trim-and-exclude
Evangelink May 29, 2026
31f0c99
Address review: convert recap unit tests to E2E coverage
Evangelink May 29, 2026
fa632c7
Convert bug report template to issue form
lbussell May 29, 2026
6e0ca12
Convert feature request template to issue form
lbussell May 29, 2026
a7e2a27
Add dotnetup issue form
lbussell May 29, 2026
b5f7e1b
Add container image contact link to issue template config
lbussell May 29, 2026
2f8a62e
Update SECURITY.md from dotnet/runtime
lbussell May 29, 2026
0b3756a
Do not run PR validation on issue template changes
lbussell May 29, 2026
fd8d42f
Change emoji
lbussell May 29, 2026
e6cc515
Push towards dotnetup discussions
lbussell May 29, 2026
1cbb241
Merge branch 'main' into dotnet-format-codefix-supressor
JoeRobich May 29, 2026
1554065
Migrate GenerateDepsFile to IMultiThreadableTask (#53950)
SimaTian May 29, 2026
c625937
Reduce Helix work items with platform-aware partitioning (#54502)
MichaelSimons May 29, 2026
72ec0c9
Add per-assembly test counts to dotnet test summary (#52128)
Evangelink May 29, 2026
d51dd4e
Parameterize CodeCoverage test on IncludeTestAssembly (#52029)
Evangelink May 29, 2026
a808727
Convert issue templates to forms and add new dotnetup issue form (#54…
lbussell May 29, 2026
518b041
Bump Microsoft.Build.Traversal from 3.4.0 to 4.1.82 (#54082)
marcpopMSFT May 29, 2026
3fa6eb6
[main] Update dependencies from microsoft/testfx (#54346)
marcpopMSFT May 29, 2026
6e3a400
Potential fix for pull request finding
Evangelink May 31, 2026
0a44c04
Unskip IncludeTestAssembly=true cases via dynamic instrumentation wor…
Evangelink May 31, 2026
295768f
Revert dynamic-instrumentation workaround; keep IncludeTestAssembly=t…
Evangelink May 31, 2026
6db0995
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Jun 1, 2026
3bfaf49
Merge branch 'main' of https://github.com/dotnet/sdk into darc-main-5…
DonnaChen888 Jun 1, 2026
5193cd4
Update MTP help snapshot
DonnaChen888 Jun 1, 2026
c446f17
Add DOTNET_TEST_RUNNER environment variable to select the test runner…
Evangelink Jun 1, 2026
c48f290
Re-enable dotnet test tests on macOS ARM64 (#49665) (#54485)
Evangelink Jun 1, 2026
9735b67
File-based apps: ensure shebang analyzer only applies to `#:include` …
jjonescz Jun 1, 2026
2d998a7
[automated] Merge branch 'release/10.0.4xx' => 'main' (#54500)
DonnaChen888 Jun 1, 2026
83ceedd
Sync MTP IPC DiscoveredTest schema with microsoft/testfx (#54445)
Evangelink Jun 1, 2026
cf7f1ff
Show currently running tests in dotnet test MTP output (#49712) (#54486)
Evangelink Jun 1, 2026
803d291
Emit IndexerNameAttribute for custom-named indexers in GenAPI (#54526)
ViktorHofer Jun 1, 2026
0660a97
Trim whitespace and support exclusion patterns in --test-modules (#54…
Evangelink Jun 1, 2026
e256f8c
Merge branch 'main' into dev/amauryleve/test-ucr-mtp
Evangelink Jun 1, 2026
d361f8e
Merge branch 'main' into dev/amauryleve/handshake-failure-summary
Evangelink Jun 1, 2026
1ab3ae8
Allow GenAPI to include additional API (#54528)
ViktorHofer Jun 1, 2026
73d63db
Migrate ProcessFrameworkReferences to IMultiThreadableTask (#53945)
SimaTian Jun 1, 2026
7554d51
[release/10.0.3xx] File-based apps: ensure shebang analyzer only appl…
jjonescz Jun 1, 2026
1903390
Remove obsolete SignCoreSdk pipeline property (#54466)
Copilot Jun 1, 2026
4e2fc5e
Merge branch 'main' into dev/amauryleve/fix-52029-coverage-test
Evangelink Jun 1, 2026
a70e6ca
Merge branch 'main' into dev/amauryleve/handshake-failure-summary
Evangelink Jun 1, 2026
12480f8
Fix: only escalate to Failed! on handshake failures, not legitimate Z…
Copilot Jun 2, 2026
6e1bc1b
Surface and re-print handshake failures in dotnet test (#54501)
Evangelink Jun 2, 2026
eae56c6
Merge branch 'main' into dev/amauryleve/per-assembly-test-counts-52128
Evangelink Jun 2, 2026
6579d35
Migrate ResolveTargetingPackAssets to IMultiThreadableTask (#53944)
SimaTian Jun 2, 2026
4f40752
Add `dotnet test` device selection support for MAUI (#54295)
jonathanpeppers Jun 2, 2026
2a4129e
[dotnet watch] Fix device prompt hang for MAUI workload projects (#54…
jonathanpeppers Jun 2, 2026
66fa956
Reset files to main
github-actions[bot] Jun 2, 2026
ec766a8
Fix DefaultVerificationExcludePatterns to use ** for recursive matchi…
NikolaMilosavljevic Jun 2, 2026
64ede0d
Merge origin/main into merge/release/10.0.4xx-to-main
Copilot Jun 2, 2026
e0420a0
Resolve merge conflict with latest main
Copilot Jun 2, 2026
191c95b
Merge branch 'main' into dev/amauryleve/fix-52029-coverage-test
Evangelink Jun 2, 2026
165731d
Merge branch 'main' into dev/amauryleve/per-assembly-test-counts-52128
Evangelink Jun 2, 2026
dba7ea9
Merge branch 'main' into dev/amauryleve/test-ucr-mtp
Evangelink Jun 2, 2026
d9dffcd
Detect VS Code Copilot terminal via `COPILOT_AGENT` in LLM telemetry …
Copilot Jun 2, 2026
b65ccea
Do not set MLL
JoeRobich Jun 2, 2026
36a2cd9
Call dnx instead of tool exec
JoeRobich Jun 2, 2026
3515bea
Simplify customization of browser connection loggers (#54533)
tmat Jun 2, 2026
ce342ed
Remove EnableUnsafeAnalyzer from CSC-only template
dsplaisted Jun 2, 2026
8d94ebc
Regenerate SWA baselines to match preview.6 OriginalItemSpec output
dsplaisted Jun 2, 2026
098cd0f
Merge branch 'main' into darc-main-d60256cd-a0b0-4c59-85c4-b0bef84167e8
DonnaChen888 Jun 3, 2026
054581c
Merge branch 'main' into merge/release/10.0.4xx-to-main
DonnaChen888 Jun 3, 2026
4210e8a
Merge branch 'release/10.0.4xx' into merge/release/10.0.3xx-to-releas…
DonnaChen888 Jun 3, 2026
f09882e
Use bare-phrase `use current runtime` in --test-modules mutex error
Jun 3, 2026
72f527f
Merge branch 'main' into darc-main-5115d588-4392-482f-89bb-7d90d2090e09
DonnaChen888 Jun 3, 2026
e6cec74
Address PR feedback: drop redundant .ToString() on GetDirectorySepara…
Evangelink Jun 3, 2026
10248a5
Parameterize CodeCoverage test on IncludeTestAssembly (#52029) (#54514)
Evangelink Jun 3, 2026
f7a89c3
Update test assertion to match new error message wording
Evangelink Jun 3, 2026
6d46565
[main] Source code updates from dotnet/dotnet (#54410)
dsplaisted Jun 3, 2026
d559669
Strengthen #52029 repro: unskip IncludeTestAssembly=true cases
Evangelink Jun 3, 2026
ca65425
Add AOT support for dotnet sln list, migrate, and remove (#54384)
NikolaMilosavljevic Jun 3, 2026
056c1c1
Fix parallel-build race when packing ApiCompat.Task / GenAPI.Task tes…
dsplaisted Jun 3, 2026
b3fb911
Migrate GetPackageDirectory (#54444)
AlesProkop Jun 3, 2026
26c6d47
Apply suggestion from @KalleOlaviNiemitalo
JoeRobich Jun 3, 2026
0ec809a
Tune Helix partitioning/payload (#54512)
MichaelSimons Jun 3, 2026
b234a14
Merge remote-tracking branch 'origin/main' into darc-main-d60256cd-a0…
Copilot Jun 3, 2026
cdece38
Update the dnx script to use the newest SDK
JoeRobich May 27, 2026
c85b6e3
Disable multilevel lookup in the dnx script
JoeRobich May 27, 2026
7851faf
Do not set MLL
JoeRobich Jun 2, 2026
a824bdf
Call dnx instead of tool exec
JoeRobich Jun 2, 2026
f160b07
Apply suggestion from @KalleOlaviNiemitalo
JoeRobich Jun 3, 2026
d7b1cf3
Merge branch 'main' into merge/release/10.0.4xx-to-main
SimonZhao888 Jun 4, 2026
1016c54
[clr-ios] Keep R2R debug and inlining info in Debug for Apple mobile …
kotlarmilos Jun 4, 2026
2002189
[main] Containers: support building multi-arch with podman. (#54575)
github-actions[bot] Jun 4, 2026
e1f0bae
Merge branch 'main' into dev/amauryleve/52029-prove-or-unskip
Evangelink Jun 4, 2026
8b82ac3
Make ImplicitUsings/Nullable conditional on TFM in test templates
Evangelink Jun 4, 2026
da8d038
Enable OTel telemetry for purely-AOT operations (#54544)
baronfel Jun 4, 2026
a73c109
Use suppressors when applying code fixes (#53268)
JoeRobich Jun 4, 2026
773b59a
Add test for suppressed diagnostic being fixed
corngood Mar 9, 2026
1ae6b59
Use suppressors when applying code fixes
davidm-hb Mar 4, 2026
e94cf85
MSTest templates: add ExplicitProgramFile option
Evangelink Jun 4, 2026
22c3477
Update the dnx script to use the newest SDK (#54472)
JoeRobich Jun 4, 2026
d42aa0d
[release/10.0.3xx] Update the dnx script to use the newest SDK (#54587)
JoeRobich Jun 4, 2026
ba88029
Fix tests which changed CWD without resetting
dsplaisted Jun 4, 2026
d592659
Make ExplicitProgramFile opt-in (default: false) to avoid breaking ch…
Evangelink Jun 4, 2026
83bdf71
Fix dotnet new nunit-test creating unwanted folder when -n is used
Jun 4, 2026
4d8b6fc
SDK `main` uses dotnetup to install the bootstrap SDK and test runtim…
nagilson Jun 4, 2026
fe63beb
Add 'Investigating PRs and CI failures' guidance to copilot-instructions
dsplaisted Jun 5, 2026
c63a806
Merge branch 'main' into darc-main-d60256cd-a0b0-4c59-85c4-b0bef84167e8
SimonZhao888 Jun 5, 2026
edba4f0
Apply suggestion from @lbussell
dsplaisted Jun 5, 2026
75f2d98
Merge branch 'release/10.0.3xx' into backport/pr-53268-to-release/10.…
DonnaChen888 Jun 5, 2026
902a427
Merge branch 'main' into dev/amauryleve/fix-49760-nunit-test-unwanted…
Evangelink Jun 5, 2026
ebba65a
Merge branch 'main' into dev/amauryleve/mstest-templates-explicit-pro…
Evangelink Jun 5, 2026
007bc2a
Merge branch 'main' into dev/amauryleve/fix-test-templates-langversion
Evangelink Jun 5, 2026
c91afe4
Add --use-current-runtime / --ucr support to dotnet test (MTP) (#54495)
Evangelink Jun 5, 2026
538f4aa
Merge branch 'main' into dev/amauryleve/mstest-templates-explicit-pro…
Evangelink Jun 5, 2026
4969894
Merge branch 'main' into dev/amauryleve/fix-test-templates-langversion
Evangelink Jun 5, 2026
9a43747
Add 'Investigating PRs and CI failures' guidance to copilot-instructi…
dsplaisted Jun 5, 2026
9ced378
Fix tests which changed CWD without resetting (#54599)
dsplaisted Jun 5, 2026
32b10ac
Merge branch 'main' into dev/amauryleve/fix-49760-nunit-test-unwanted…
Evangelink Jun 5, 2026
96382bc
Merge branch 'main' into dev/amauryleve/mstest-templates-explicit-pro…
Evangelink Jun 5, 2026
b6aacab
Merge branch 'main' into dev/amauryleve/fix-test-templates-langversion
Evangelink Jun 5, 2026
62e5fa4
[dotnet test] Two-stage Ctrl+C cancellation for MTP path
Evangelink Jun 5, 2026
d4bab27
Address PR review comments and fix CI build error
Evangelink Jun 5, 2026
35ebdfb
Validate Microsoft.Testing.Platform ExecutionMode handshake property
Evangelink Jun 5, 2026
48188ec
Consolidate handshake-failure help-mode opt-out + add coverage
Evangelink Jun 5, 2026
5bbfa3f
Migrate StaticWebAssetsGeneratePackagePropsFile to IMultiThreadableTask
jankratochvilcz Jun 5, 2026
889612a
Address Copilot review feedback
jankratochvilcz Jun 5, 2026
8a3be26
Preserve caller-shape BuildTargetPath in log messages
jankratochvilcz Jun 5, 2026
20d79db
Migrate EncodeRazorInputItem to multi-threadable
jankratochvilcz Jun 5, 2026
9ea5780
Dispose TerminalTestReporter created in TestApplicationHandlerTests
Evangelink Jun 5, 2026
046e27b
Move macOS x64 TestBuild PR leg to CI-only, switch to ARM64 (#54604)
MichaelSimons Jun 5, 2026
fb6441c
Discover installed 8.0.x runtime in DepsJson version test (#54619)
nagilson Jun 5, 2026
be8b631
[release/10.0.3xx] Use suppressors when applying code fixes (#54595)
JoeRobich Jun 6, 2026
34762fc
Merge branch 'main' into dev/amauryleve/fix-test-templates-langversion
Evangelink Jun 7, 2026
8550c26
Merge branch 'main' into dev/amauryleve/mstest-templates-explicit-pro…
Evangelink Jun 7, 2026
b8caebe
Merge branch 'main' into dev/amauryleve/fix-49760-nunit-test-unwanted…
Evangelink Jun 7, 2026
04c37c2
Merge branch 'main' into dev/amauryleve/sdk-two-stage-ctrlc
Evangelink Jun 7, 2026
dbb94d9
Reject empty MTP execution mode handshakes
Evangelink Jun 7, 2026
7a2d894
Fix `dotnet new nunit-test -n <name>` creating an unwanted `<name>/` …
Evangelink Jun 7, 2026
e72c754
Merge branch 'main' into darc-main-d60256cd-a0b0-4c59-85c4-b0bef84167e8
SimonZhao888 Jun 8, 2026
40e08fd
Fix merge: use TestAssetsManager property instead of removed _testAss…
dsplaisted Jun 8, 2026
eb2db05
Merge branch 'main' into merge/release/10.0.4xx-to-main
SimonZhao888 Jun 8, 2026
22c9cce
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Jun 8, 2026
48f292a
[automated] Merge branch 'release/10.0.4xx' => 'main' (#54557)
SimonZhao888 Jun 8, 2026
5a6c542
Merge branch 'main' into darc-main-d60256cd-a0b0-4c59-85c4-b0bef84167e8
SimonZhao888 Jun 8, 2026
c420520
Validate Microsoft.Testing.Platform ExecutionMode handshake property …
Evangelink Jun 8, 2026
b9de86c
Propagate Ctrl+C token into ReadAllAsync and throw on cancellation
Evangelink Jun 8, 2026
3114c26
Fix ExplicitProgramFile parameter to avoid template engine NRE
Evangelink Jun 8, 2026
222be94
Update MTPHelpSnapshot for MTP 26307.5 (--show-stderr/--show-stdout d…
Evangelink Jun 8, 2026
9ea89dc
Migrate get packages to prune (#54488)
AlesProkop Jun 8, 2026
f8fefe2
Bump MSTest, NUnit, and xUnit packages to latest versions in templates
Evangelink Jun 8, 2026
da3b3e5
Add XUnitVersion option to xunit templates (partial fix for #54499)
Evangelink Jun 8, 2026
6d27943
Merge branch 'main' into migrate-swa-generate-package-props
jankratochvilcz Jun 8, 2026
16894de
MSTest templates: add ExplicitProgramFile option (#54596)
Evangelink Jun 8, 2026
6dd753f
Integrate Helix Job Monitor into CI and PR pipelines (#54583)
MichaelSimons Jun 8, 2026
bf5cc92
Bump MSTest, NUnit, and xUnit packages to latest in dotnet new test t…
Evangelink Jun 8, 2026
9e7f3cd
Merge branch 'main' into migrate-encode-razor
jankratochvilcz Jun 8, 2026
31ec589
Add TestRunner option to nunit templates
Evangelink Jun 8, 2026
6393112
Apply suggestions from code review
Evangelink Jun 8, 2026
a99207a
Pin xunit.runner.json schema to v3.1
Evangelink Jun 8, 2026
167a8b5
Produce TemplateLocator package in product build
Copilot Jun 1, 2026
5dcced8
Remove explicit TemplateLocator package ID
emaf Jun 2, 2026
bfc17d1
Exclude VSTest-only packages from NUnit MTP path
Evangelink Jun 8, 2026
f0feb21
Apply suggestions from code review
Evangelink Jun 8, 2026
c780730
Apply suggestions from code review
Evangelink Jun 8, 2026
48ed9f4
Apply suggestions from code review
Evangelink Jun 8, 2026
0397308
Migrate StaticWebAssetsGeneratePackagePropsFile to IMultiThreadableTa…
jankratochvilcz Jun 8, 2026
5f88df0
Initial plan
Copilot Jun 8, 2026
f04ac46
Initial plan for servicing-consider label workflow
Copilot Jun 8, 2026
4cb23bc
Add GHA workflow to auto-apply Servicing-consider label on servicing …
Copilot Jun 8, 2026
eb842ae
Expand servicing branch coverage to include release/10.* and release/…
Copilot Jun 8, 2026
59d45d3
Make ImplicitUsings/Nullable conditional on TFM in test templates (#5…
Evangelink Jun 8, 2026
37b9f2e
Add --test-runner option to nunit templates (#54638)
Evangelink Jun 8, 2026
1702ba8
Apply Servicing-consider label to backport PRs; only skip non-backpor…
Copilot Jun 8, 2026
4a7bf07
Use release/** branch pattern and remove unrelated template localizat…
Copilot Jun 8, 2026
9183db5
Fix branch pattern to only match version-like release branches
Copilot Jun 8, 2026
1f94272
Remove unrelated template localization changes that were accidentally…
Copilot Jun 8, 2026
35583f7
[release/10.0.4xx] Source code updates from dotnet/dotnet (#54505)
dotnet-maestro[bot] Jun 8, 2026
7f15b01
Reset files to main
github-actions[bot] Jun 8, 2026
e9d78d6
Remove unused client name. (#54629)
tmat Jun 8, 2026
af70bf2
Fix zizmor findings: pin action SHA and suppress dangerous-triggers
baronfel Jun 8, 2026
cd7c775
Address Copilot review comments
baronfel Jun 8, 2026
e2a9916
Retrigger CI
jankratochvilcz Jun 8, 2026
e1a424b
Migrate CheckForUnsupportedWinMDReferences to IMultiThreadableTask (#…
jankratochvilcz Jun 8, 2026
5bf8b99
Migrate EncodeRazorInputItem to multi-threadable (#54620)
jankratochvilcz Jun 8, 2026
7c09ce4
Merge remote-tracking branch 'origin/release/10.0.3xx' into merge/rel…
Copilot Jun 8, 2026
492e3fb
Produce standalone TemplateLocator package in pass 2 (#54560)
marcpopMSFT Jun 8, 2026
0433ad2
Fix unhandled ObjectDisposedException in TimestampedFileLogger during…
Copilot Jun 8, 2026
48a271d
Merge branch 'main' into darc-main-d60256cd-a0b0-4c59-85c4-b0bef84167e8
SimonZhao888 Jun 9, 2026
d9bb0ac
Merge remote-tracking branch 'origin/release/10.0.4xx' into merge/rel…
Copilot Jun 9, 2026
dcfea09
Merge origin/main into merge/release/10.0.4xx-to-main
Copilot Jun 9, 2026
ea87834
Restore trailing whitespace in MTP help snapshot to match actual output
Jun 9, 2026
e8c17f1
Merge branch 'main' into dev/amauryleve/xunit-template-v3-option
Evangelink Jun 9, 2026
0a7c898
Bump Microsoft.NET.Test.Sdk to 18.6.0 and xunit.runner.visualstudio t…
Evangelink Jun 9, 2026
cd26047
Fix CtrlCCancellationManagerTests helper on headless CI
Jun 9, 2026
afa93aa
[main] Update dependencies from microsoft/testfx (#54524)
Evangelink Jun 9, 2026
a7f7750
Add XUnitVersion v3 option (MTP default) to xunit templates (#54636)
Evangelink Jun 9, 2026
a00eb45
Merge branch 'main' into merge/release/10.0.4xx-to-main
SimonZhao888 Jun 9, 2026
b577d44
migrate PickBestRid (#54489)
AlesProkop Jun 9, 2026
7be2cff
Add per-assembly test counts to dotnet test summary (#52128) (#54513)
Evangelink Jun 9, 2026
cf1bf5c
[dotnet test] Two-stage Ctrl+C cancellation for MTP path (#54615)
Evangelink Jun 9, 2026
4789820
Improve empty `TargetFramework` diagnostic with dedicated NETSDK1241 …
marcpopMSFT Jun 9, 2026
58918b1
Fix pack-publish race in ApiCompat.Task / GenAPI.Task by deduplicatin…
dsplaisted Jun 9, 2026
5870011
Fix string format in watch IReporter (#54438)
samuelsandri Jun 9, 2026
5a158a8
Add GHA workflow to auto-apply `Servicing-consider` label on servicin…
marcpopMSFT Jun 9, 2026
7daed2b
Add Docker image savings analysis to deduplication doc (#54662)
MichaelSimons Jun 9, 2026
baafe38
Merge branch 'main' into merge/release/10.0.4xx-to-main
SimonZhao888 Jun 10, 2026
550fe0c
[automated] Merge branch 'release/10.0.4xx' => 'main' (#54644)
SimonZhao888 Jun 10, 2026
cc1d7e0
Merge branch 'main' into dev/amauryleve/52029-prove-or-unskip
Evangelink Jun 10, 2026
db54cee
[automated] Merge branch 'release/10.0.3xx' => 'release/10.0.4xx' (#5…
SimonZhao888 Jun 10, 2026
b9a8142
Reset files to main
github-actions[bot] Jun 10, 2026
517c054
[Diagnostic] Strengthen #52029 repro and unskip IncludeTestAssembly=t…
Evangelink Jun 10, 2026
809eeee
[StaticWebAssets] Clear AssetGroups when materializing framework asse…
lewing Jun 10, 2026
644aed8
Restructure CI/CD: skip Official builds on push, add weekly schedule,…
marcpopMSFT Jun 10, 2026
3d49a6a
[automated] Merge branch 'release/10.0.4xx' => 'main' (#54675)
jjonescz Jun 10, 2026
155262a
Exclude arcade and helix from dependabot (#54645)
Copilot Jun 10, 2026
ec2e749
Update implicit versions for June (#54668)
marcpopMSFT Jun 10, 2026
e5e78b4
Add missing TestRunner/XUnitVersion/ExplicitProgramFile localization …
Evangelink Jun 11, 2026
846d56c
Migrate ResolvePackageFileConflicts to IMultiThreadableTask (#53943)
SimaTian Jun 11, 2026
a7230cd
Fix telemetry init crash in NativeAOT dotnet muxer on macOS (#54699)
kotlarmilos Jun 11, 2026
7b0f367
Use `get-dotnetup` script `aka.ms` links (#54606)
nagilson Jun 11, 2026
079fb5a
Migrate DiscoverDefaultScopedCssItems to IMultiThreadableTask (#54701)
jankratochvilcz Jun 11, 2026
2fc1745
Unify the managed and NativeAOT CLI parsers into one shared implement…
baronfel Jun 11, 2026
05f8d71
Exclude vseanreesermsft from servicing-consider label workflow (#54672)
Copilot Jun 11, 2026
aa86632
Reset files to release/dnup
github-actions[bot] Jun 11, 2026
1275c2d
Merge remote-tracking branch 'origin/main' into temp-merge-test
Copilot Jun 12, 2026
8a1f433
Merge branch 'temp-merge-test' into merge/main-to-release/dnup
Copilot Jun 12, 2026
cd9468b
Fix merge issues: add missing using
Jun 12, 2026
07b043c
Merge branch 'release/dnup' into merge/main-to-release/dnup
SimonZhao888 Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,17 @@ Testing:
- Test commands in the dogfood shell (e.g., `dnx --help`, `dotnet tool install --help`)
- The dogfood script sets up PATH and environment to use the newly built SDK

Investigating PR validation failures:
1. Read the PR and its comments/reviews. Check for references to other PRs or issues where the problem might have already been solved.
2. Use the `ci-analysis` skill (if available) to diagnose build failures.

Output Considerations:
- When considering how output should look, solicit advice from baronfel.

Localization:
- Avoid modifying .xlf files and instead prompt the user to update them using the `/t:UpdateXlf` target on MSBuild. Correctly automatically modified .xlf files have elements with state `needs-review-translation` or `new`.
- Consider localizing strings in .resx files when possible.
- When adding a new NETSDK error message in `src/Tasks/Common/Resources/Strings.resx`, assign the next available NETSDK code, append the entry at the end of the file, and update the trailing "latest message added" guard comment.

Documentation:
- Do not manually edit files under documentation/manpages/sdk as these are generated based on documentation and should not be manually modified.
Expand Down
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ updates:
labels:
- "dependencies"
- "dependabot: main"
ignore:
# arcade and helix are updated by the automated codeflow process
- dependency-name: "Microsoft.DotNet.Arcade.Sdk"
- dependency-name: "Microsoft.DotNet.Helix.Sdk"

# - package-ecosystem: "nuget"
# directory: "/eng/dependabot"
Expand Down
86 changes: 86 additions & 0 deletions .github/workflows/add-servicing-consider-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Add Servicing-consider Label to PRs

on:
# zizmor: ignore[dangerous-triggers] -- no PR code is checked out; only adds a label via API
pull_request_target:
types: [opened, reopened, ready_for_review]
branches:
- 'release/[0-9]*'

permissions:
contents: read
pull-requests: write

jobs:
add-servicing-label:
runs-on: ubuntu-latest
# Only run in the dotnet/sdk repository
if: github.repository == 'dotnet/sdk'

steps:
- name: Add Servicing-consider label if needed
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
with:
script: |
const pr = context.payload.pull_request;
const prNumber = pr.number;

// Skip if the PR already has the Servicing-consider or Servicing-approved label
const labels = pr.labels.map(l => l.name);
if (labels.includes('Servicing-consider') || labels.includes('Servicing-approved')) {
console.log('PR already has a servicing label, skipping.');
return;
}

// Skip codeflow PRs: inter-branch merge flow and darc subscription PRs.
// Only skip known codeflow bot accounts; other bots (e.g. Dependabot) should
// still receive the label. Backport PRs carry the 'backport' label and are
// also exempt from this skip.
const author = pr.user.login;
const codeflowBots = ['dotnet-maestro[bot]', 'github-actions[bot]', 'dotnet-maestro'];
const isBackport = labels.includes('backport');
if (codeflowBots.includes(author) && !isBackport) {
console.log(`Skipping codeflow PR authored by bot: ${author}`);
return;
}

// Skip branding and internal-to-public flow PRs from vseanreesermsft
if (author === 'vseanreesermsft') {
console.log(`Skipping branding/internal-to-public PR authored by: ${author}`);
return;
}

// Fetch all changed files in the PR (paginated to handle large PRs)
let files = [];
let page = 1;
while (true) {
const { data: pageFiles } = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
per_page: 100,
page: page
});
files = files.concat(pageFiles);
if (pageFiles.length < 100) break;
page++;
}

// Skip test-only PRs: all changed files are under test/ directories
const isTestOnly = files.length > 0 && files.every(file =>
file.filename.startsWith('test/')
);

if (isTestOnly) {
console.log('PR only contains test changes, skipping.');
return;
}

// Add the Servicing-consider label
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: ['Servicing-consider']
});
console.log(`Added Servicing-consider label to PR #${prNumber}.`);
20 changes: 17 additions & 3 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ trigger:
- internal/release/*
- exp/*

schedules:
- cron: '0 0 * * 0'
displayName: Weekly CodeQL/SDL build
branches:
include:
- main
always: true

pr:
branches:
include:
Expand Down Expand Up @@ -91,6 +99,12 @@ extends:
- stage: build
displayName: Build
jobs:
############### HELIX JOB MONITOR ###############
- ${{ if or(eq(parameters.runTestBuild, true), eq(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/core-templates/job/helix-job-monitor.yml@self
parameters:
helixAccessToken: $(HelixApiAccessToken)

############### WINDOWS ###############
- template: /eng/pipelines/templates/jobs/sdk-job-matrix.yml@self
parameters:
Expand All @@ -109,7 +123,7 @@ extends:
preSteps:
- powershell: New-Item -ItemType Directory -Path $(Build.SourcesDirectory)/artifacts/bin -Force
displayName: Create artifacts/bin directory
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest')) }}:
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest'), ne(variables['Build.Reason'], 'BatchedCI')) }}:
timeoutInMinutes: 180
windowsJobParameterSets:
### OFFICIAL ###
Expand Down Expand Up @@ -164,7 +178,7 @@ extends:
publishTaskPrefix: 1ES.
populateInternalRuntimeVariables: true
runtimeSourceProperties: /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest')) }}:
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest'), ne(variables['Build.Reason'], 'BatchedCI')) }}:
timeoutInMinutes: 90
linuxJobParameterSets:
### OFFICIAL ###
Expand Down Expand Up @@ -247,7 +261,7 @@ extends:
publishTaskPrefix: 1ES.
populateInternalRuntimeVariables: true
runtimeSourceProperties: /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest')) }}:
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest'), ne(variables['Build.Reason'], 'BatchedCI')) }}:
timeoutInMinutes: 90
macOSJobParameterSets:
### OFFICIAL ###
Expand Down
20 changes: 8 additions & 12 deletions .vsts-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,6 @@ pr:
- src/Installer/*
- test/dotnetup.Tests/*

parameters:
- name: enableArm64Job
displayName: Enables the ARM64 job
type: boolean
default: true

variables:
- template: /eng/pipelines/templates/variables/sdk-defaults.yml
# Variables used: DncEngPublicBuildPool
Expand All @@ -56,6 +50,9 @@ stages:
- stage: build
displayName: Build
jobs:
############### HELIX JOB MONITOR ###############
- template: /eng/common/core-templates/job/helix-job-monitor.yml

############### WINDOWS ###############
- template: /eng/pipelines/templates/jobs/sdk-job-matrix.yml@self
parameters:
Expand All @@ -81,20 +78,19 @@ stages:
name: Azure Pipelines
vmImage: macOS-latest
os: macOS
helixTargetQueue: osx.15.amd64.open
### ARM64 ###
- ${{ if eq(parameters.enableArm64Job, true) }}:
helixTargetQueue: osx.15.arm64.open
### x64 (CI only) ###
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- template: /eng/pipelines/templates/jobs/sdk-job-matrix.yml
parameters:
pool:
name: Azure Pipelines
vmImage: macOS-latest
os: macOS
helixTargetQueue: osx.15.arm64.open
helixTargetQueue: osx.15.amd64.open
macOSJobParameterSets:
- categoryName: TestBuild
targetArchitecture: arm64
runtimeIdentifier: osx-arm64
runtimeIdentifier: osx-x64

############### DOTNET-FORMAT ###############
- template: /eng/dotnet-format/dotnet-format-integration.yml
6 changes: 4 additions & 2 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,10 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<!-- TODO: Re-enable NuGet Audit and fix alerts: https://github.com/dotnet/sdk/issues/51466 -->
<PropertyGroup>
<!-- Disable NuGet audit in official builds. MSBuild does not correctly handle
WarningsNotAsErrors for NuGet warnings (https://github.com/dotnet/msbuild/issues/10801),
so audit findings become errors via TreatWarningsAsErrors. -->
<PropertyGroup Condition="'$(OfficialBuild)' == 'true'">
<NuGetAudit>false</NuGetAudit>
</PropertyGroup>

Expand Down
57 changes: 56 additions & 1 deletion documentation/general/eliminate-duplicate-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ The following data is the result of this analysis using the [SdkLayoutAnalyzer](
The goal is for the vast majority if not all of the components within the SDK to depend on and use the same version of their dependencies.

**Notes:**

1. The baseline measurements in the following tables compare the complete .NET installation (including runtimes, packs, shared frameworks, host, etc.) versus just the SDK directory contents.
1. Standard archive formats (zip and tar) do not automatically deduplicate identical files, each file is compressed independently, even when multiple files have identical content.
This means that duplicate files consume space both on disk after extraction and within the compressed archive itself.
Expand Down Expand Up @@ -145,6 +146,7 @@ While the RPM protocol itself supports hard links, there are known issues in bot
Additionally, our current build infrastructure (Arcade) does not support creating RPM packages with hard links ([dotnet/arcade#16453](https://github.com/dotnet/arcade/issues/16453)).

Before we can confidently support hard links on Linux, we need to:

1. Fix the Arcade infrastructure to support creating RPM packages with hard links
2. Test comprehensively on the Linux distributions we target, particularly Azure Linux
3. Work with distribution maintainers to ensure compatibility
Expand All @@ -153,6 +155,7 @@ Until this work is completed and validated, we will use symbolic links on non-Wi

If we find that hard links cannot be used in RPM packages long term, one alternative to consider would be using hard links everywhere except RPM packages, which would continue using symbolic links.
However, this approach has trade-offs that would need to be carefully evaluated:

- **Con:** Different link types across acquisition channels adds complexity
- **Con:** Distribution maintainers who create RPM packages from our source tarballs would need to translate hard links to symbolic links

Expand All @@ -162,8 +165,8 @@ A decision on this alternative approach will be made once the RPM packaging inve

Hard links are generally preferred because they [offer performance advantages since no extra steps are needed to resolve the file path](https://www.linuxbash.sh/post/symbolic-links-ln-s-vs-hard-links), providing slightly better access time compared to symbolic links which require path resolution.


**Key Benefits of File Links:**

- **No runtime changes required** — Components continue to reference files using their existing paths. Both hard links and symbolic links are transparent to applications.
- **Immediate disk savings** — Links reduce disk usage by the size of duplicate files.
- **Tarball compatibility** — Tar format natively supports both hard links and symbolic links, preserving space savings in compressed archives.
Expand Down Expand Up @@ -201,6 +204,7 @@ The existing zip archives will continue to be published with duplicates during t
**Phase 2: Migrate Acquisition Channels**

In subsequent preview releases, we will migrate the acquisition channels under our control to use Windows tarballs:

- **dotnet-install scripts** ([dotnet/install-scripts](https://github.com/dotnet/install-scripts)) — Update to prefer tarballs on Windows
- **Azure DevOps .NET install task** ([microsoft/azure-pipelines-tasks](https://github.com/microsoft/azure-pipelines-tasks)) — Add tarball support for Windows agents
- **GitHub Actions setup-dotnet** ([actions/setup-dotnet](https://github.com/actions/setup-dotnet)) — Add tarball extraction support for Windows
Expand Down Expand Up @@ -265,13 +269,15 @@ Tests will be created to ensure:
A proof of concept for link-based deduplication was implemented, demonstrating the viability and effectiveness of the approach:

**Implementation Details:**

- A new MSBuild task `DeduplicateFilesWithHardLinks` was created to identify and replace duplicate files with links during SDK layout generation
- Files are hashed to identify duplicates
- The POC initially used hard links; the production implementation will use platform-specific link types (hard links on Windows, symbolic links on Linux/macOS)

**Space Savings:**

In a Linux x64 development build of .NET 11.0 SDK, the link-based approach achieved:

- 131 MB reduction in disk size
- 61 MB reduction in archive size

Expand Down Expand Up @@ -312,6 +318,7 @@ The analysis categorizes these groups as follows:
**Linux x64 (10.0.100):**

Group Categorization:

- Groups differing by Core vs FX: 228
- Groups with different FX versions: 3
- Groups with different Core versions: 1
Expand All @@ -320,6 +327,7 @@ Group Categorization:
- Groups with NetStandard + Core: 30

Potential Savings (if duplicates were eliminated):

- Different FX versions (keep lowest): 1.9 MB
- Different Core versions (keep lowest): 0.1 MB
- NetStandard + NetFx (keep NetStandard): 0.9 MB
Expand Down Expand Up @@ -354,6 +362,7 @@ This represents content that should be trimmed out entirely as it serves no purp

In other cases, we ship content to support cross-platform development scenarios—for example, Windows-specific assemblies included in Linux SDKs to enable cross-compilation or multi-targeting scenarios.
While this content does serve a purpose, it should be analyzed case-by-case to determine whether it should:

- Ship in-box as part of the core SDK experience
- Be available as optional packages that can be dynamically acquired when needed

Expand All @@ -365,6 +374,12 @@ Both of these content placement issues are outside the scope of the duplicate el
However, they will likely be surfaced and made more visible as part of this effort.
When identified, independent issues will be logged to address these concerns separately.

### Windows Containers

Windows containers do not support hard links, which blocks adoption of this feature for Windows container images.
The impact of this limitation is modest: Windows containers have significantly fewer supported versions/SKUs than Linux, and Windows base image updates occur only once per month (Patch Tuesday), resulting in far fewer image rebuilds.
As a result, the potential savings for Windows container images would be an order of magnitude less than Linux.

## Related

- [Visual Studio de-duplication effort](https://microsoft.sharepoint.com/:w:/s/b3f10b15-fb59-4650-957a-2c632aa943ba/IQBR2aXv7jC8RatIyxJJNPCeAQxjDmLii-R65o0yUvOJatk?e=IcnsAG)
Expand Down Expand Up @@ -471,3 +486,43 @@ While the shared assembly location approach offers theoretical benefits in terms
5. **Implementation Cost:** High development and maintenance burden compared to filesystem-level deduplication.

The hard link approach was selected because it achieves the same disk and archive size benefits without requiring changes to component loading logic or risking behavioral changes in sensitive toolchain components.

## Appendix: Docker Image Savings Analysis

This section quantifies the downstream impact of deduplication on .NET Docker images.
The estimates use .NET 10 as a representative single release to project per-release savings.
The "In-Support" columns show the projected combined impact once three in-support versions all include this feature.
The "All" columns show cumulative totals across all SDK images and pulls (in-support and EOL), illustrating savings that accrue over time.

### Linux SDK Archive Size Reduction

As of .NET 11.0 Preview 4, the Linux SDK archive is **56 MB smaller** as a result of this work.

### Linux SDK Image Pull Bandwidth Savings

| .NET 10 Pulls/Wk | In-Support Pulls/Wk | All Pulls/Wk | .NET 10 Saved (TB wk / yr) | In-Support Saved (TB wk / yr) | All Saved (TB wk / yr) |
|------------------|---------------------|--------------|----------------------------|-------------------------------|------------------------|
| 147,000 | 485,400 | 630,000 | 7.9 / 408.2 | 25.9 / 1348.0 | 33.9 / 1749.6 |

### Linux SDK Image Storage Savings

| New .NET 10 Images/Mo | New In-Support Images/Mo | All Images | .NET 10 Saved (GB mo / yr) | In-Support Saved (GB mo / yr) | All Saved (GB) |
|-----------------------|--------------------------|------------|----------------------------|-------------------------------|----------------|
| 42.6 | 130.5 | 26,866 | 2.3 / 27.6 | 7.1 / 85.6 | 1,469.2 |

---

<sup>1</sup> "All" columns represent all SDK images ever published to MCR and all SDK image pulls per week, regardless of whether the .NET version is currently in support or end-of-life.

<sup>2</sup> New images per month are driven by multiple sources: .NET servicing releases (Patch Tuesday) and base image updates. .NET images are rebuilt whenever an underlying base image (e.g., Ubuntu, Alpine) is updated.

<sup>3</sup> Assuming saved storage is billed at the [ACR](https://azure.microsoft.com/en-us/pricing/details/container-registry/) additional storage rate of $0.00334/GB/day, the in-support storage savings of 7.1 GB/month translate to approximately **$0.71/month**. If every Linux SDK image ever shipped had included this feature, the total cumulative savings of ~1.5 TB would translate to roughly **$147/month**.

### Key Takeaways

- Over the .NET 10 LTS three-year support period, this saves approximately **1,224.6 TB** in bandwidth (408.2 TB/yr x 3) and **82.8 GB** in storage (27.6 GB/yr x 3).
Those savings don't count previews, usage increase when the previous LTS (8.0) reaches end-of-life or pulls after EOL.
- **Bandwidth savings are significant in absolute terms**, over 1,350 TB/year for in-support versions at 630,000 pulls per week.
This is modest relative to the scale at which Azure operates, as indicated by its pricing.
- **Storage savings are negligible.** Even if every Linux SDK image ever shipped had included this feature, the cumulative savings would be ~1.5 TB.
- The primary value is **customer-facing**: every Linux SDK image pull is 56 MB smaller, resulting in faster downloads and reduced storage/higher density for users.
Loading
Loading