Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
320 commits
Select commit Hold shift + click to select a range
d305205
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Mar 27, 2026
27d0eb2
Update dependencies from build 308038
dotnet-maestro[bot] Mar 27, 2026
d4ba56f
Add skill for incremental building (#53479)
jjonescz Mar 27, 2026
7857084
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53597)
nagilson Mar 27, 2026
e76fe19
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Mar 28, 2026
d59c081
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Mar 28, 2026
24ddee2
Update dependencies from build 308170
dotnet-maestro[bot] Mar 28, 2026
1ae4445
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53618)
dotnet-maestro[bot] Mar 28, 2026
78b0f83
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Mar 28, 2026
2f357f2
[release/10.0.1xx] Update dependencies from microsoft/testfx (#53609)
DonnaChen888 Mar 30, 2026
b8ff208
Reset files to release/10.0.2xx
github-actions[bot] Mar 30, 2026
0e81b9c
[release/10.0.2xx] Update dependencies from microsoft/testfx (#53610)
DonnaChen888 Mar 30, 2026
e8edd90
Reset files to release/10.0.3xx
github-actions[bot] Mar 30, 2026
710b93a
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Mar 30, 2026
923d92f
Merge branch 'release/10.0.3xx' into merge/release/10.0.2xx-to-releas…
DonnaChen888 Mar 30, 2026
f6d5c3a
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
DonnaChen888 Mar 30, 2026
06d787f
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Mar 30, 2026
614381d
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53605)
DonnaChen888 Mar 30, 2026
73ed98a
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
DonnaChen888 Mar 30, 2026
34f3ee4
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Mar 30, 2026
7a1a094
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Mar 30, 2026
2d58d49
Update dependencies from build 308358
dotnet-maestro[bot] Mar 30, 2026
f809d9d
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53628)
joeloff Mar 30, 2026
7fc5e2f
Update dependencies from build 308437
dotnet-maestro[bot] Mar 30, 2026
6a4191a
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53633)
DonnaChen888 Mar 31, 2026
6c53e98
Reset files to release/10.0.3xx
github-actions[bot] Mar 31, 2026
f6f7b04
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Mar 31, 2026
edef559
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Mar 31, 2026
2214e43
Merge branch 'release/10.0.3xx' into merge/release/10.0.2xx-to-releas…
DonnaChen888 Mar 31, 2026
f9c2782
Update dependencies from build 308463
dotnet-maestro[bot] Mar 31, 2026
4db0972
Update dependencies from build 308465
dotnet-maestro[bot] Mar 31, 2026
f8015bc
[release/10.0.1xx] Update dependencies from microsoft/testfx (#53638)
DonnaChen888 Mar 31, 2026
92264c3
Reset files to release/10.0.2xx
github-actions[bot] Mar 31, 2026
c6357d2
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53641)
DonnaChen888 Mar 31, 2026
6cbac03
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53640)
DonnaChen888 Mar 31, 2026
798f7a7
Merge branch 'release/10.0.2xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Mar 31, 2026
7c512d6
[release/10.0.2xx] Update dependencies from microsoft/testfx (#53639)
DonnaChen888 Mar 31, 2026
b5d15e2
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Mar 31, 2026
56138ac
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Mar 31, 2026
9341350
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53646)
dotnet-maestro[bot] Mar 31, 2026
132a604
Update dependencies from build 308657
dotnet-maestro[bot] Apr 1, 2026
fad4afb
Update dependencies from build 308659
dotnet-maestro[bot] Apr 1, 2026
ef64dba
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53651)
DonnaChen888 Apr 1, 2026
0418e80
Reset files to release/10.0.3xx
github-actions[bot] Apr 1, 2026
dc41797
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53650)
DonnaChen888 Apr 1, 2026
105010e
Merge branch 'release/10.0.3xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 1, 2026
a232473
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Apr 1, 2026
8de657c
dotnet test MTP: Disable ANSI output in LLM environments (#53654)
Youssef1313 Apr 1, 2026
0c32f0a
Update dependencies from build 308746
dotnet-maestro[bot] Apr 1, 2026
293be99
[dotnet-watch] Add device selection support (#53631)
jonathanpeppers Apr 1, 2026
2086764
[dotnet-watch] Fix WebSocket transport crash on Ctrl+R restart (#53648)
jonathanpeppers Apr 1, 2026
a38aeea
Update dependencies from build 308845
dotnet-maestro[bot] Apr 2, 2026
a0c56e3
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 2, 2026
19a1789
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 2, 2026
b8eb1f7
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53655)
DonnaChen888 Apr 2, 2026
267608f
Reset files to release/10.0.3xx
github-actions[bot] Apr 2, 2026
bb1a967
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53666)
DonnaChen888 Apr 2, 2026
3f5f04d
[release/10.0.1xx] Update dependencies from microsoft/testfx (#53668)
DonnaChen888 Apr 2, 2026
6a69913
Update MTP help snapshot to include stdout/stderr options
DonnaChen888 Apr 2, 2026
817ff5a
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 2, 2026
d4ad376
Reset files to release/10.0.2xx
github-actions[bot] Apr 2, 2026
ae09a7c
Merge branch 'release/10.0.3xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 2, 2026
f58f8ff
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 2, 2026
f8b9b51
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Apr 2, 2026
7a2dde8
Update dependencies from build 308997
dotnet-maestro[bot] Apr 2, 2026
8d3f653
[dotnet watch] Fix target framework selector being stuck (#53675)
jonathanpeppers Apr 2, 2026
6785634
[release/10.0.2xx] Update dependencies from microsoft/testfx (#53669)
joeloff Apr 2, 2026
0e77bae
Reset files to release/10.0.3xx
github-actions[bot] Apr 2, 2026
f3b759a
Add new package source for dotnet-dotnet
marcpopMSFT Apr 2, 2026
18bfb68
[release/10.0.1xx] Source code updates from dotnet/dotnet (#53611)
SimonZhao888 Apr 3, 2026
5a4ab0d
Reset files to release/10.0.2xx
github-actions[bot] Apr 3, 2026
2b25e81
Merge branch 'release/10.0.2xx' into darc-release/10.0.2xx-dca93059-3…
SimonZhao888 Apr 3, 2026
3efb3a4
Merge branch 'release/10.0.3xx' into merge/release/10.0.2xx-to-releas…
SimonZhao888 Apr 3, 2026
8be5755
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 3, 2026
f228ec1
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 3, 2026
0b8ee0b
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
SimonZhao888 Apr 3, 2026
9522e9f
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53674)
SimonZhao888 Apr 3, 2026
0e243dc
[release/10.0.1xx] Update dependencies from microsoft/testfx (#53683)
SimonZhao888 Apr 3, 2026
46090aa
[release/10.0.2xx] Update dependencies from microsoft/testfx (#53684)
SimonZhao888 Apr 3, 2026
82b410f
Update dependencies from build 309086
dotnet-maestro[bot] Apr 3, 2026
16d30ec
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53686)
marcpopMSFT Apr 3, 2026
c905100
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
marcpopMSFT Apr 3, 2026
c44ea57
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 3, 2026
0a70ab2
Update dependencies from build 309163
dotnet-maestro[bot] Apr 3, 2026
f5a0378
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
marcpopMSFT Apr 3, 2026
e47d48b
Update dependencies from build 309184
dotnet-maestro[bot] Apr 4, 2026
7da796b
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 4, 2026
a33d85e
Update dependencies from build 309217
dotnet-maestro[bot] Apr 4, 2026
5c4940e
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Apr 5, 2026
6ce036f
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53696)
marcpopMSFT Apr 6, 2026
625894f
Update Version.Details.props
Youssef1313 Apr 7, 2026
054c2b5
Update Version.Details.xml
Youssef1313 Apr 7, 2026
454bc1c
Update branding on release/9.0.3xx
vseanreesermsft Apr 7, 2026
497bea3
[release/10.0.1xx] Source code updates from dotnet/dotnet (#53706)
DonnaChen888 Apr 8, 2026
87ba49e
Reset files to release/10.0.2xx
github-actions[bot] Apr 8, 2026
8c19559
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Apr 8, 2026
8797835
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 8, 2026
ac5ec79
Update dependencies from build 309470
dotnet-maestro[bot] Apr 8, 2026
d7cac53
Update Helix queue names: vs2022.pre → vs2022
marcpopMSFT Apr 8, 2026
6634f7b
[release/9.0.3xx] Update branding to 9.0.314 (#53740)
DonnaChen888 Apr 9, 2026
e94b91d
Update dependencies from https://github.com/dotnet/roslyn-analyzers b…
dotnet-maestro[bot] Mar 18, 2026
30d3c4e
Update dependencies from https://github.com/dotnet/roslyn-analyzers b…
dotnet-maestro[bot] Mar 22, 2026
6bcfed0
Reset files to release/10.0.1xx
github-actions[bot] Apr 9, 2026
42b9518
Update dependencies from https://github.com/dotnet/arcade build 20260…
dotnet-maestro[bot] Mar 19, 2026
f13f233
Update dependencies from https://github.com/dotnet/arcade build 20260…
dotnet-maestro[bot] Mar 31, 2026
3c74f76
Update dependencies from https://github.com/dotnet/arcade build 20260…
dotnet-maestro[bot] Apr 2, 2026
5264ad6
Update dependencies from https://github.com/dotnet/scenario-tests bui…
dotnet-maestro[bot] Mar 20, 2026
a80be0b
Update dependencies from https://github.com/dotnet/scenario-tests bui…
dotnet-maestro[bot] Apr 3, 2026
e305b35
Update dependencies from https://github.com/dotnet/templating build 2…
dotnet-maestro[bot] Apr 8, 2026
451bad6
Update dependencies from https://github.com/dotnet/templating build 2…
dotnet-maestro[bot] Apr 8, 2026
138a74b
Update dependencies from https://github.com/dotnet/templating build 2…
dotnet-maestro[bot] Apr 9, 2026
6c29018
.NET Source-Build 9.0.115 March 2026 Updates (#53358)
dotnet-sb-bot Mar 11, 2026
f25b827
Increase memory for license scanning (#53720)
mthalman Apr 7, 2026
66da2a2
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 9, 2026
815727a
Warn for missing shebang (#53614)
jjonescz Apr 9, 2026
26dff76
Update dependencies from https://github.com/dotnet/templating build 2…
dotnet-maestro[bot] Apr 9, 2026
27547d7
Fix dnx not authenticating for private feeds (#53322)
robertcoltheart Apr 9, 2026
68096ab
Fix merge of MTP help snapshot file
dsplaisted Apr 9, 2026
6d0eb1c
Fix merge: restore Version.Details.props/.xml from release/10.0.3xx
dsplaisted Apr 9, 2026
c837e29
[release/9.0.3xx] Update dependencies from dotnet/roslyn-analyzers (#…
marcpopMSFT Apr 9, 2026
5486d5c
[automated] Merge branch 'release/9.0.3xx' => 'release/10.0.1xx' (#53…
marcpopMSFT Apr 9, 2026
8e5eedf
Reset files to release/10.0.2xx
github-actions[bot] Apr 9, 2026
7ec57f2
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Apr 10, 2026
0063a21
[release/9.0.3xx] Update dependencies from dotnet/scenario-tests (#53…
DonnaChen888 Apr 10, 2026
29ebb0e
Reset files to release/10.0.1xx
github-actions[bot] Apr 10, 2026
a401734
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 10, 2026
9499118
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 10, 2026
09d73d7
[automated] Merge branch 'release/9.0.3xx' => 'release/10.0.1xx' (#53…
DonnaChen888 Apr 10, 2026
6141838
Reset files to release/10.0.2xx
github-actions[bot] Apr 10, 2026
f5c0f78
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Apr 10, 2026
a0719b7
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 10, 2026
08e9f08
Improve support of nuget commands with file-based apps (#53535)
jjonescz Apr 10, 2026
90c2460
[release/10.0.1xx] Fix working directory of simple file-based apps (#…
github-actions[bot] Apr 11, 2026
0a8a0b1
Reset files to release/10.0.2xx
github-actions[bot] Apr 11, 2026
83a426c
Merge branch 'release/10.0.2xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 13, 2026
e2a4d88
Revert the change on RunFileTests.cs
DonnaChen888 Apr 13, 2026
3773069
Revert the change on RunFileTests.cs
DonnaChen888 Apr 13, 2026
353b20c
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 13, 2026
efcd7c0
Fix `dotnet clean file-based-apps` in docs (#53806)
jjonescz Apr 13, 2026
4c6ab90
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-bf2260b2-0…
MiYanni Apr 13, 2026
a52a502
Merge branch 'release/10.0.2xx' into darc-release/10.0.2xx-d3b9229c-b…
MiYanni Apr 13, 2026
5924ea1
Merge branch 'release/10.0.3xx' into merge/release/10.0.2xx-to-releas…
MiYanni Apr 13, 2026
11d076f
[automated] Merge branch 'release/9.0.1xx' => 'release/9.0.3xx' (#53728)
DonnaChen888 Apr 14, 2026
775c884
Reset files to release/10.0.1xx
github-actions[bot] Apr 14, 2026
6dbd1cb
[release/9.0.3xx] Update dependencies from dotnet/templating (#53746)
DonnaChen888 Apr 14, 2026
c2f9314
Keep strong reference to virtual project's ProjectRootElement to prev…
jjonescz Apr 14, 2026
75f222d
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 14, 2026
6a965ff
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 14, 2026
7b95384
[release/9.0.3xx] Update dependencies from dotnet/arcade (#53531)
DonnaChen888 Apr 14, 2026
70cccf6
[automated] Merge branch 'release/9.0.3xx' => 'release/10.0.1xx' (#53…
DonnaChen888 Apr 14, 2026
9f927ea
Reset files to release/10.0.2xx
github-actions[bot] Apr 14, 2026
ecfcf67
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Apr 14, 2026
f4605ab
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Apr 14, 2026
e560ea3
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Apr 14, 2026
b288c5d
Merge commit '71076f226724d44c8a4ad8d4d0279f7f87e88b8c' into internal…
vseanreesermsft Apr 14, 2026
86eee90
Plan: Apply 3 commits to disable failing C++/CLI and compilation cont…
Copilot Apr 15, 2026
e600a1b
Disable C++/CLI and net46 tests pending toolset/framework fixes
Copilot Apr 15, 2026
6ddabc1
Apply CI fixes: disable C++/CLI tests and skip net46 test pending too…
Copilot Apr 15, 2026
2c7da31
[watch] Fixes command line parsing and TFM selection for FBAs (#53698)
tmat Apr 15, 2026
80922e4
Fix reporting Hot Reload capabilities of WASM projects (#53665)
tmat Apr 15, 2026
cc3acf3
Fix AspireHostLauncher not launching the Aspire host
karolz-ms Apr 14, 2026
3930f03
Improve AspireHostLauncher interface
karolz-ms Apr 15, 2026
b278293
Implement `#:ref` directive for file-based apps (#53480)
jjonescz Apr 15, 2026
c6d77a2
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 15, 2026
2dfefb1
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 15, 2026
c674bd5
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 15, 2026
ab087c1
[release/10.0.1xx] Update dependencies from microsoft/testfx (#53704)
Evangelink Apr 15, 2026
8b18ac8
[release/10.0.2xx] Source code updates from dotnet/dotnet (#53758)
MiYanni Apr 15, 2026
5e98323
Reset files to release/10.0.3xx
github-actions[bot] Apr 15, 2026
1e04900
[release/10.0.1xx] Source code updates from dotnet/dotnet (#53795)
dotnet-maestro[bot] Apr 15, 2026
5963f1f
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53759)
dotnet-maestro[bot] Apr 15, 2026
4cf67b4
Merge branch 'release/10.0.3xx' into locfiles/0911d173-6b6c-4f7f-b130…
MiYanni Apr 15, 2026
91b8c09
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
MiYanni Apr 15, 2026
fa5621c
Merging internal commits for release/9.0.3xx (#53860)
vseanreesermsft Apr 15, 2026
9d3eff0
Reset files to release/10.0.1xx
github-actions[bot] Apr 15, 2026
d96971b
Update dependencies from build 310584
dotnet-maestro[bot] Apr 15, 2026
344e433
Fix duplicate flags being stripped when rollForward is true in tool r…
Copilot Apr 6, 2026
de2ab88
Improve test assertion to use substring check instead of string split…
Copilot Apr 6, 2026
dd2b76a
Update test/dotnet.Tests/CommandTests/Tool/Run/ToolRunCommandTests.cs
marcpopMSFT Apr 10, 2026
c24e33e
Merge branch 'release/10.0.3xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 16, 2026
75a90b5
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 16, 2026
cb3bcb9
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53907)
DonnaChen888 Apr 16, 2026
263b397
[release/10.0.3xx] Enhance fish shell completions with static+dynamic…
github-actions[bot] Apr 16, 2026
320c853
Update dependencies from build 310613
dotnet-maestro[bot] Apr 16, 2026
9d0a65e
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53911)
DonnaChen888 Apr 16, 2026
eecf585
Add validation script and nested AGENTS.md to enforce agent skill qua…
lbussell Apr 16, 2026
ae2f7ca
[automated] Merge branch 'release/9.0.3xx' => 'release/10.0.1xx' (#53…
DonnaChen888 Apr 16, 2026
f65ffb6
[automated] Merge branch 'release/10.0.2xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Apr 16, 2026
eab185e
Merge branch 'release/10.0.3xx' into backport/pr-53877-to-release/10.…
karolz-ms Apr 16, 2026
b472b14
Backflow from https://github.com/dotnet/dotnet / 884fcae build 310667
dotnet-maestro[bot] Apr 16, 2026
8c96828
Update dependencies from build 310667
dotnet-maestro[bot] Apr 16, 2026
2aa495d
Update dependencies from build 310711
dotnet-maestro[bot] Apr 16, 2026
6bf23e1
[release/10.0.3xx] Fix AspireHostLauncher not launching the Aspire ho…
karolz-ms Apr 16, 2026
8df6fc4
[release/10.0.1xx] Source code updates from dotnet/dotnet (#53925)
DonnaChen888 Apr 17, 2026
bdfa6b7
Update dependencies from build 310753
dotnet-maestro[bot] Apr 17, 2026
eff209f
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53935)
DonnaChen888 Apr 17, 2026
c116598
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
058fa78
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
90af2dd
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
4b377c5
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
DonnaChen888 Apr 17, 2026
ccdab30
Warn about common run-file pitfalls (#53833)
jjonescz Apr 17, 2026
ea12322
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
5521e9a
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
ef77c54
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 17, 2026
116d03e
Enable CI builds and locbranch for 4xx
marcpopMSFT Apr 17, 2026
b055edd
Fix NRE in ToolConfigurationDeserializer when ridSpecificPackages is …
Copilot Mar 10, 2026
51183a3
Downgrade implicit version for the hotfix
marcpopMSFT Apr 17, 2026
49e3b56
Switch to automatic version calculation for 10.0.3xx
marcpopMSFT Apr 17, 2026
ea548bf
Update branding and implicit version
marcpopMSFT Apr 17, 2026
9ac5f51
Remove feature flags for `#:include` and `#:exclude` (#53775)
jjonescz Apr 17, 2026
17d3c7c
Fix NRE in ToolConfigurationDeserializer when RuntimeIdentifierPackag…
marcpopMSFT Apr 17, 2026
4df3e95
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
MiYanni Apr 17, 2026
80a5888
Downgrade implicit version for the hotfix (#53972)
marcpopMSFT Apr 17, 2026
b0553cb
Reset files to release/10.0.3xx
github-actions[bot] Apr 17, 2026
0ec5129
Merge branch 'release/10.0.3xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 20, 2026
8ce4720
Update dependencies from build 311020
dotnet-maestro[bot] Apr 20, 2026
17056f1
Update dependencies from build 311030
dotnet-maestro[bot] Apr 20, 2026
b660d61
[release/10.0.3xx] Source code updates from dotnet/dotnet (#53988)
DonnaChen888 Apr 20, 2026
4c2c4e1
Reset files to release/10.0.4xx
github-actions[bot] Apr 20, 2026
e17bbd5
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 20, 2026
9f7836b
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 20, 2026
2e9edd8
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
DonnaChen888 Apr 20, 2026
aa68cb3
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.3xx' (#5…
DonnaChen888 Apr 20, 2026
c1eb8ba
Update sarif files to 10.0.400
jjonescz Apr 20, 2026
02e38bb
Enable CI builds and locbranch for 4xx (#53968)
marcpopMSFT Apr 20, 2026
caec512
Update sarif files to 10.0.400 (#53993)
marcpopMSFT Apr 20, 2026
c840dab
Switch to automatic version calculation for 10.0.3xx (#53974)
marcpopMSFT Apr 20, 2026
21136bf
Merge branch 'release/10.0.4xx' into merge/release/10.0.3xx-to-releas…
jjonescz Apr 21, 2026
c49ca6e
Merge branch 'release/10.0.4xx' into darc-release/10.0.4xx-bb07cc79-2…
jjonescz Apr 21, 2026
1b3380d
[automated] Merge branch 'release/10.0.3xx' => 'release/10.0.4xx' (#5…
jjonescz Apr 21, 2026
dc458ab
[dotnet-watch] Clear WebSocket env vars in ClearHotReloadEnvironmentV…
jonathanpeppers Apr 21, 2026
691c464
[release/10.0.3xx] Fix dotnet tool runner stripping duplicate flags w…
baronfel Apr 21, 2026
bf2024b
Reset files to release/10.0.4xx
github-actions[bot] Apr 21, 2026
339d45a
Merge branch 'release/10.0.4xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Apr 22, 2026
1ae871d
Remove feature flag for transitive `#:` directives (#54012)
jjonescz Apr 22, 2026
c578bea
[release/10.0.4xx] Source code updates from dotnet/dotnet (#53990)
DonnaChen888 Apr 22, 2026
935eb8a
[automated] Merge branch 'release/10.0.3xx' => 'release/10.0.4xx' (#5…
DonnaChen888 Apr 22, 2026
f10f362
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Apr 22, 2026
d889756
Split RunFileTests into multiple files to match main branch structure
jjonescz Apr 22, 2026
f23cc8a
Add RunFileTestFixture to RunFileTestBase matching main branch
jjonescz Apr 22, 2026
19da28b
Fix Pack tests: set NUGET_PACKAGES to avoid cache interference
jjonescz Apr 22, 2026
4cf4ebd
Split RunFileTests into multiple files to match main branch structure…
dsplaisted Apr 22, 2026
84c8cb0
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dsplaisted Apr 22, 2026
09930f5
Reset files to main
github-actions[bot] Apr 22, 2026
3690d03
Merge release/10.0.4xx to main
marcpopMSFT Apr 23, 2026
7295009
Merge branch 'main' of https://github.com/dotnet/sdk into merge/relea…
DonnaChen888 Apr 24, 2026
2e7d32b
Fix IDE0073 header and xUnit1051 warnings in MissingShebangInFileBase…
DonnaChen888 Apr 24, 2026
b884904
Fixup run-file tests
jjonescz Apr 24, 2026
510af8b
Fixup more run-file tests
jjonescz Apr 24, 2026
a86dfb6
Fix merge conflict regression: restore Except->Where fix for duplicat…
dsplaisted Apr 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"entries": {
"actions/github-script@v9": {
"repo": "actions/github-script",
"version": "v9",
"sha": "373c709c69115d41ff229c7e5df9f8788daa9553"
},
"github/gh-aw-actions/setup@v0.68.3": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.68.3",
"sha": "ba90f2186d7ad780ec640f364005fa24e797b360"
}
}
}
3 changes: 2 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ Testing:
- Examples:
- `dotnet test test/dotnet.Tests/dotnet.Tests.csproj --filter "Name~ItShowsTheAppropriateMessageToTheUser"`
- `dotnet exec artifacts/bin/redist/Debug/dotnet.Tests.dll -method "*ItShowsTheAppropriateMessageToTheUser*"`
- For incremental test runs of `dotnet.Tests` (avoids slow full `build.cmd`), use the `incremental-test` skill.
- To test CLI command changes:
- Build the redist SDK: `./build.sh` from repo root
- Create a dogfood environment: `source eng/dogfood.sh`
- Create a dogfood environment: `source eng/dogfood.sh`
- 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

Expand Down
24 changes: 24 additions & 0 deletions .github/skills/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Agent Skills

When creating skills, follow:
- Agent skills specification: https://agentskills.io/specification.md
- Best practices: https://agentskills.io/skill-creation/best-practices.md

## Structure

```
.github/skills/skill-name/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
├── assets/ # Optional: templates, resources
└── ... # Any additional files or directories
```

## Quick Checklist

- [ ] Run `dotnet .github/skills/ValidateSkill.cs <skill-dir>` to validate format.
- [ ] `description` describes what the skill does and when to use it. Skill body does not include "When to use this skill".
- [ ] Skill does not explain things the agent already knows. Focus on what's specific to the task at hand.
- [ ] Deterministic processes use scripts (for example, to fetch and format data from an API).
- [ ] Scripts use PowerShell or .NET file-based apps, not bash.
103 changes: 103 additions & 0 deletions .github/skills/ValidateSkill.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#!/usr/bin/env dotnet
#:property ManagePackageVersionsCentrally=false
#:property PublishAot=false
#:package YamlDotNet@16.3.0

using YamlDotNet.Serialization;
using System.Text.RegularExpressions;

if (args.Length == 0)
{
Console.Error.WriteLine("Usage: dotnet ValidateSkill.cs <path-to-skill-directory>");
return 1;
}

string skillDir = Path.GetFullPath(args[0]);
string skillName = Path.GetFileName(Path.TrimEndingDirectorySeparator(skillDir));
string skillFile = Path.Combine(skillDir, "SKILL.md");

// SKILL.md must exist in the skill directory
if (!File.Exists(skillFile))
{
Console.Error.WriteLine($"SKILL.md not found in {skillDir}");
return 1;
}

string text = File.ReadAllText(skillFile);

// SKILL.md must begin with YAML frontmatter delimited by ---
if (!text.StartsWith("---"))
{
Console.Error.WriteLine("No YAML frontmatter found.");
return 1;
}

Match frontmatterMatch = Regex.Match(
text,
@"\A---\r?\n(?<yaml>.*?)(?:\r?\n)---(?:\r?\n|$)",
RegexOptions.Singleline);
if (!frontmatterMatch.Success)
{
Console.Error.WriteLine("Unterminated YAML frontmatter.");
return 1;
}

string yaml = frontmatterMatch.Groups["yaml"].Value.Trim();

IDeserializer deserializer = new DeserializerBuilder().Build();
Dictionary<string, object> frontmatter = deserializer.Deserialize<Dictionary<string, object>>(yaml);

// name is required
if (!frontmatter.TryGetValue("name", out object? nameValue) || nameValue is not string frontmatterName)
{
Console.Error.WriteLine("Frontmatter missing 'name' field.");
return 1;
}

// name must be 1-64 characters
if (frontmatterName.Length == 0 || frontmatterName.Length > 64)
{
Console.Error.WriteLine($"Name is {frontmatterName.Length} chars (must be 1-64).");
return 1;
}

// name: lowercase alphanumeric and hyphens only, no leading/trailing/consecutive hyphens
if (!Regex.IsMatch(frontmatterName, @"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$")
|| frontmatterName.Contains("--"))
{
Console.Error.WriteLine($"Invalid name '{frontmatterName}'. Must be lowercase letters, numbers, and hyphens only. Must not start/end with a hyphen or contain consecutive hyphens.");
return 1;
}

// name must match the parent directory name
if (!string.Equals(skillName, frontmatterName, StringComparison.Ordinal))
{
Console.Error.WriteLine($"Name mismatch: directory is '{skillName}' but SKILL.md name is '{frontmatterName}'.");
return 1;
}

// description is required
if (!frontmatter.TryGetValue("description", out object? descValue) || descValue is not string description)
{
Console.Error.WriteLine("Frontmatter missing 'description' field.");
return 1;
}

// description must be 1-1024 characters
if (description.Length == 0 || description.Length > 1024)
{
Console.Error.WriteLine($"Description is {description.Length} chars (must be 1-1024).");
return 1;
}

// Keep SKILL.md under 500 lines; move detailed content to references/ or scripts/
// See "Progressive Disclosure" at https://agentskills.io/specification.md
int lineCount = text.Split('\n').Length;
if (lineCount > 500)
{
Console.Error.WriteLine($"SKILL.md is {lineCount} lines (max 500). See \"Progressive Disclosure\" at https://agentskills.io/specification.md");
return 1;
}

Console.WriteLine($"Skill '{frontmatterName}' is valid.");
return 0;
106 changes: 106 additions & 0 deletions .github/skills/incremental-test/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
name: incremental-test
description: >-
Run dotnet.Tests incrementally without a full build.cmd rebuild. Use after
modifying source code in SDK projects to quickly build only changed projects,
deploy their outputs into the redist SDK layout, and run tests against them.
---

# Incremental Test Runner for dotnet.Tests

## Prerequisites

- A full build must have been completed at least once (via `build.cmd` or `build.sh`) so that the redist SDK layout exists at `artifacts\bin\redist\Debug\dotnet\sdk\<version>\`.
- The repo-local `.dotnet` SDK must match the version expected by the test projects. If the runtime or SDK version is out of date (e.g., test build fails with a missing framework error), run `.\restore.cmd` (or `./restore.sh` on macOS/Linux) to download the correct SDK into `.dotnet`.
- This workflow uses Windows/PowerShell commands and paths. On macOS/Linux, substitute forward slashes and use `cp` instead of `Copy-Item`.

## Workflow

### Step 1: Identify modified projects

Determine which projects have been modified. Use context from:
- The files you just edited in this session.
- Or `git status`/`git diff` to find changed `.cs` files and map them to their `.csproj` projects.

### Step 2: Build modified projects

Build each modified project individually using the repo-local dotnet:

```
.\.dotnet\dotnet build <path-to-project.csproj> -c Debug
```

For example:
```
.\.dotnet\dotnet build src\Cli\Microsoft.DotNet.Cli.Utils\Microsoft.DotNet.Cli.Utils.csproj -c Debug
```

If the `dotnet` CLI project itself was modified, build it:
```
.\.dotnet\dotnet build src\Cli\dotnet\dotnet.csproj -c Debug
```

### Step 3: Copy output DLLs to the redist SDK layout

Discover the SDK version directory name:
```powershell
$sdkVersion = (Get-ChildItem artifacts\bin\redist\Debug\dotnet\sdk -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1).Name
```

For each modified project, copy its output DLL (and any satellite assemblies) from the project's build output to the redist SDK directory:

```
Source: artifacts\bin\<ProjectName>\Debug\net10.0\<AssemblyName>.dll
Target: artifacts\bin\redist\Debug\dotnet\sdk\<version>\
```

For example:
```powershell
Copy-Item artifacts\bin\Microsoft.DotNet.ProjectTools\Debug\net10.0\Microsoft.DotNet.ProjectTools.dll artifacts\bin\redist\Debug\dotnet\sdk\$sdkVersion\
Copy-Item artifacts\bin\Microsoft.DotNet.Cli.Utils\Debug\net10.0\Microsoft.DotNet.Cli.Utils.dll artifacts\bin\redist\Debug\dotnet\sdk\$sdkVersion\
```

The `dotnet` project is special — it builds into `artifacts\bin\dotnet\Debug\net10.0\` and its `dotnet.dll` must be copied to the SDK directory:
```powershell
Copy-Item artifacts\bin\dotnet\Debug\net10.0\dotnet.dll artifacts\bin\redist\Debug\dotnet\sdk\$sdkVersion\
```

**Important notes:**
- For typical incremental edits, only copy DLLs that are **already present** in the target directory. If your change introduces a new shipped assembly or moves assemblies, you will need a full `build.cmd`/`build.sh` to update the layout correctly.
- Some projects multi-target (e.g., `net10.0` and `net472`). Always use the `net10.0` output.
- If localization resource DLLs were changed (in subdirectories like `cs\`, `de\`, etc.), copy those too.

### Step 4: Build the test project (if test code was modified)

The test project `test\dotnet.Tests\dotnet.Tests.csproj` outputs directly to `artifacts\bin\redist\Debug\` (via `TestHostFolder`), so just build it:

```
.\.dotnet\dotnet build test\dotnet.Tests\dotnet.Tests.csproj
```

### Step 5: Run the tests

Run specific tests:
```
.\.dotnet\dotnet exec artifacts\bin\redist\Debug\dotnet.Tests.dll -method "*TestMethodName*"
```

Or run filtered tests via `dotnet test`:
```
.\.dotnet\dotnet test test\dotnet.Tests\dotnet.Tests.csproj --no-build --filter "Name~TestMethodName"
```

## Common project paths

| Assembly | Project Path |
|---|---|
| `dotnet.dll` | `src\Cli\dotnet\dotnet.csproj` |
| `Microsoft.DotNet.Cli.Utils.dll` | `src\Cli\Microsoft.DotNet.Cli.Utils\Microsoft.DotNet.Cli.Utils.csproj` |
| `Microsoft.DotNet.Cli.Definitions.dll` | `src\Cli\Microsoft.DotNet.Cli.Definitions\Microsoft.DotNet.Cli.Definitions.csproj` |
| `Microsoft.DotNet.Cli.CoreUtils.dll` | `src\Cli\Microsoft.DotNet.Cli.CoreUtils\Microsoft.DotNet.Cli.CoreUtils.csproj` |
| `Microsoft.DotNet.Configurer.dll` | `src\Cli\Microsoft.DotNet.Configurer\Microsoft.DotNet.Configurer.csproj` |
| `Microsoft.DotNet.ProjectTools.dll` | `src\Microsoft.DotNet.ProjectTools\Microsoft.DotNet.ProjectTools.csproj` |
| `Microsoft.DotNet.NativeWrapper.dll` | `src\Resolvers\Microsoft.DotNet.NativeWrapper\Microsoft.DotNet.NativeWrapper.csproj` |
| `Microsoft.DotNet.TemplateLocator.dll` | `src\Microsoft.DotNet.TemplateLocator\Microsoft.DotNet.TemplateLocator.csproj` |
| `Microsoft.DotNet.InternalAbstractions.dll` | `src\Cli\Microsoft.DotNet.InternalAbstractions\Microsoft.DotNet.InternalAbstractions.csproj` |
| `dotnet.Tests.dll` | `test\dotnet.Tests\dotnet.Tests.csproj` |
File renamed without changes.
46 changes: 34 additions & 12 deletions documentation/general/dotnet-run-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ Additionally, the implicit project file has the following customizations:
string? directoryPath = AppContext.GetData("EntryPointFileDirectoryPath") as string;
```

- `EntryPointFilePath` property is set to the entry-point file path and is made visible to analyzers via `CompilerVisibleProperty`.

- `FileBasedProgram` property is set to `true` and can be used by SDK targets to detect file-based apps.

- `DisableDefaultItemsInProjectFolder` property is set to `true` which results in `EnableDefaultItems=false` by default
Expand Down Expand Up @@ -110,8 +112,8 @@ If a dash (`-`) is given instead of the target path (i.e., `dotnet run -`), the
In this case, the current working directory is not used to search for other files (launch profiles, other sources in case of multi-file apps);
the compilation consists solely of the single file read from the standard input.
However, the current working directory is still used as the working directory for building and executing the program.
To reference projects relative to the current working directory (instead of relative to the temporary directory the file is isolated in),
you can use something like `#:project $(MSBuildStartupDirectory)/relative/path`.
To reference projects or files relative to the current working directory (instead of relative to the temporary directory the file is isolated in),
you can use something like `#:project $(MSBuildStartupDirectory)/relative/path` or `#:ref $(MSBuildStartupDirectory)/relative/lib.cs`.

`dotnet path.cs` is a shortcut for `dotnet run --file path.cs` provided that `path.cs` is a valid [target path](#target-path) (`dotnet -` is currently not supported)
and it is not a DLL path, built-in command, or a NuGet tool (e.g., `dotnet watch` invokes the `dotnet-watch` tool
Expand Down Expand Up @@ -165,7 +167,7 @@ removes current user's `dotnet run` build outputs that haven't been used in 30 d
They are not cleaned immediately because they can be re-used on subsequent runs for better performance.
The automatic cleanup can be disabled by environment variable `DOTNET_CLI_DISABLE_FILE_BASED_APP_ARTIFACTS_AUTOMATIC_CLEANUP=true`,
but other parameters of the automatic cleanup are currently not configurable.
The same cleanup can be performed manually via command `dotnet clean-file-based-app-artifacts`.
The same cleanup can be performed manually via command `dotnet clean file-based-apps`.

## Directives for project metadata

Expand All @@ -178,11 +180,12 @@ which are [ignored][ignored-directives] by the C# language but recognized by the
#:property LangVersion=preview
#:package System.CommandLine@2.0.0-*
#:project ../MyLibrary
#:ref ../lib/lib.cs
#:include ./**/*.cs
```

Each directive has a kind (e.g., `package`), a name (e.g., `System.CommandLine`), a separator (e.g., `@`), and a value (e.g., the package version).
The value is required for `#:property`, optional for `#:package`/`#:sdk`, and disallowed for `#:project`/`#:include`.
The value is required for `#:property`, optional for `#:package`/`#:sdk`, and disallowed for `#:project`/`#:ref`/`#:include`.

The name must be separated from the kind of the directive by whitespace
and any leading and trailing white space is not considered part of the name and value.
Expand All @@ -209,28 +212,43 @@ The directives are processed as follows:
(because `ProjectReference` items don't support directory paths).
An error is reported if zero or more than one projects are found in the directory, just like `dotnet reference add` would do.

- Each `#:ref` references another `.cs` file as a separate project reference.
A virtual project is created for the referenced file (e.g., `lib.cs` produces a virtual `lib.cs.csproj`),
and a `<ProjectReference Include="lib.cs.csproj" />` is injected in an `<ItemGroup>`.
It is an error if the name is empty or if the referenced file does not exist.
Unlike `#:project`, `#:ref` points to a `.cs` file (not a `.csproj` file or directory).

The referenced file is itself a file-based program with its own virtual project (defaulting to `OutputType=Exe`).
Library files without an entry point should use `#:property OutputType=Library` to avoid compilation errors.
Because the referenced file is compiled as a separate assembly, internal members of the referenced file are not accessible from the referencing file.
The `#:ref` directive is transitive: a referenced file can itself contain `#:ref` directives (or any other directives).

Relative paths are resolved relative to the file containing the directive.
MSBuild variables (like `$(MSBuildProjectDirectory)`) can be used in the path.

During [conversion](#grow-up), each `#:ref` directive creates a separate library project in a sibling directory
and a corresponding `<ProjectReference>` entry is added to the converted project.
The conversion is recursive: any `#:ref` directives in the referenced files are also converted in the same way.

This directive is currently gated under a feature flag that can be enabled by setting the MSBuild property `ExperimentalFileBasedProgramEnableRefDirective=true`.

- Each `#:include` is injected as `<{1} Include="{0}" />` in an `<ItemGroup>`
where `{0}` is the directive's value and `{1}` is determined by its extension.
The mapping can be customized by setting the MSBuild property `FileBasedProgramsItemMapping`
which is by default set to `.cs=Compile;.resx=EmbeddedResource;.json=None;.razor=Content`.
(The mapping customization is currently gated under a feature flag that can be enabled by setting the MSBuild property `ExperimentalFileBasedProgramEnableItemMapping=true`.)

It is an error if the value is empty.

Relative paths are resolved relative to the file containing the directive.

This directive is currently gated under a feature flag that can be enabled by setting the MSBuild property `ExperimentalFileBasedProgramEnableIncludeDirective=true`.

- Each `#:exclude` is injected similarly to `#:include` but with `Remove="{0}"` instead of `Include="{0}"`.

This directive is currently gated under a feature flag that can be enabled by setting the MSBuild property `ExperimentalFileBasedProgramEnableExcludeDirective=true`.

- Other directive kinds result in an error, reserving them for future use.

Directive values support MSBuild variables (like `$(..)`) normally as they are translated literally and left to MSBuild engine to process.
However, in `#:project` directives, variables might not be preserved during [grow up](#grow-up),
However, in `#:project` and `#:ref` directives, variables might not be preserved during [grow up](#grow-up),
because there is additional processing of those directives that makes it technically challenging to preserve variables in all cases
(project directive values need to be resolved to be relative to the target directory
(project and ref directive values need to be resolved to be relative to the target directory
and also to point to a project file rather than a directory).
Note that it is not expected that variables inside the path change their meaning during the conversion,
so for example `#:project ../$(LibName)` is translated to `<ProjectReference Include="../../$(LibName)/Lib.csproj" />` (i.e., the variable is preserved).
Expand All @@ -243,7 +261,6 @@ and can do that efficiently by stopping the search when it sees the first "C# to

For a given `dotnet run file.cs`, we include directives from the current entry point file (`file.cs`) and all other non-entry-point C# files,
specifically from all `Compile` items included in the project, no matter whether the `Compile` items are specified in some MSBuild code or inferred from `#:include`.
(Processing directives from other files is currently gated under a feature flag that can be enabled by setting the MSBuild property `ExperimentalFileBasedProgramEnableTransitiveDirectives=true`.)
The order in which other files are processed is currently unspecified (can change across SDK versions) but deterministic (stable in a given SDK version).
We do not limit these directives to appear only in entry point files because it allows:
- a non-entry-point file like `Util.cs` to be self-contained and have all the `#:package`s it needs specified in it,
Expand All @@ -270,6 +287,11 @@ Along with `#:`, the language also ignores `#!` which could be then used for [sh
Console.WriteLine("Hello");
```

When a file-based program uses [`#:include`](#multiple-files) directives to include additional files,
the entry point file should start with `#!` to clearly distinguish it from included files.
This helps IDEs to properly handle multi-file scenarios and discover entry points.
The analyzer **CA2266** reports a warning if the entry point file is missing the shebang line in this scenario.

## Implementation

The build is performed using MSBuild APIs on in-memory project files.
Expand Down
5 changes: 5 additions & 0 deletions dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"version": 1,
"isRoot": true,
"tools": {}
}
Loading
Loading