Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
2cd4c42
Merged PR 53829: [internal/release/9.0.1xx] Update dependencies from …
Sep 26, 2025
e431f75
Merged PR 53831: Delete feed comment causing XML error
ellahathaway Sep 26, 2025
042afe4
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 4, 2025
9758689
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 7, 2025
3c466c0
Merge commit '28e787973bede36889fe75128aa5712207956742'
Oct 7, 2025
04a29b4
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 7, 2025
d427aa5
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 8, 2025
216ffce
Merge commit 'df81d17ed4c6f1e917a5fd14c63038bc6b3882f1'
Oct 9, 2025
6b6df15
Merge commit 'fd3c5a7c658d901f446e0823b0445abfdaaaa8b7'
Oct 9, 2025
720c5f6
Merge commit 'fd333afa3daa8929d934e62ee66070fb581f19fc'
Oct 9, 2025
7e485ad
Merge commit '54384337e06f3cb9f2cc512c11ac9ddfe884bc7e'
Oct 9, 2025
992a43a
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 10, 2025
abd6d9d
Merge commit '9b5bdc8f8cf25c47b6a837bb35f765681c8eb521'
Oct 10, 2025
3a0aec7
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 10, 2025
1513c3c
Merged PR 54189: [internal/release/9.0.1xx] Update dependencies from …
Oct 10, 2025
9e5844f
Merged PR 53988: [internal/release/9.0.1xx] Update dependencies from …
Oct 10, 2025
9f35729
Merged PR 54089: [internal/release/9.0.1xx] Update dependencies from …
Oct 10, 2025
e448aa4
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 11, 2025
7ac098b
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 11, 2025
4f64682
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 11, 2025
2b12650
Merge commit 'c1ff1eb29765fbfc8f0a66ae952f6ed6db6a2473'
Oct 11, 2025
1d0c4f2
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 14, 2025
8e57727
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 14, 2025
836e675
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 14, 2025
0ba52c7
Merged PR 54241: [internal/release/9.0.1xx] Update dependencies from …
Oct 14, 2025
f4a5649
Merged PR 54236: [internal/release/9.0.1xx] Update dependencies from …
Oct 14, 2025
b2d6676
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 14, 2025
4960992
Merged PR 54338: [internal/release/9.0.1xx] Update dependencies from …
Oct 14, 2025
2d8b54b
Merge commit 'c18d6673dda2980788799167ef31ce8381836878'
Oct 14, 2025
7e29f21
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 15, 2025
5f58bfc
Merge commit '2ebd518374b20bc0243dee91861a3c33a673aea3'
Oct 16, 2025
000b93c
Merge commit 'a40803851a12f4909e4c35ecc26da26628dbbed9'
Oct 17, 2025
e3a0551
Merge commit 'c381880683fafdb80a184784eed8c755a8a4e344'
Oct 17, 2025
9f28a95
Merge commit '738a9562ba8e5cd1f6b2d04b6880ba96c7da827d'
Oct 17, 2025
ed87711
Merge commit 'c7e073c72f85f11ba801e5bacf41e6be3827a8ed'
Oct 17, 2025
73d104b
Merge commit '168072e06dad1dd4eb3a7c7d282316f1ee16a761'
Oct 18, 2025
e5a1ceb
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 19, 2025
5cacc55
Merge commit '0e25013a8702df5232b7a588a527845380a56a4d'
Oct 20, 2025
411ac57
Merge commit '5710ca1c85823965c885f926571158b474324508'
Oct 20, 2025
8db8fe3
Merge commit '7e16521b0c10e42d02d689621512ada6097ec321'
Oct 20, 2025
6443d06
Merged PR 54383: [internal/release/9.0.1xx] Update dependencies from …
Oct 21, 2025
563a5c7
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 21, 2025
81e7aa6
Update dependencies from https://dev.azure.com/dnceng/internal/_git/d…
dotnet-bot Oct 21, 2025
bbd075c
Merged PR 54528: [internal/release/9.0.1xx] Update dependencies from …
Oct 21, 2025
e5d20a9
Merged PR 54527: [internal/release/9.0.1xx] Update dependencies from …
Oct 21, 2025
f071d6f
Local dependencies updated based on build with BAR id 283367 (2025091…
vseanreesermsft Oct 21, 2025
49aa034
Merged PR 54556: internal/release/9.0.1xx - revert msbuild dependency…
vseanreesermsft Oct 21, 2025
2cb3059
Update MicrosoftBuildMinimumVersion to 17.11.48
Copilot Nov 3, 2025
9b970ef
Merge commit '49aa03442a648a5064a4440f16109db773a9f9b5' into internal…
vseanreesermsft Nov 11, 2025
c6824a8
Merge branch 'release/9.0.1xx' into internal-merge-9.0.1xx-2025-11-11…
marcpopMSFT Nov 14, 2025
268da63
Add new package source for DotNet-msbuild-Trusted
marcpopMSFT Nov 14, 2025
6c2191a
Update Microsoft.Build and related dependencies versions
marcpopMSFT Nov 14, 2025
7cb7ff3
Merging internal commits for release/9.0.1xx (#51654)
marcpopMSFT Nov 18, 2025
a054842
Merge branch 'release/9.0.3xx' into copilot/update-build-minimum-version
marcpopMSFT Nov 20, 2025
b93d090
Initial plan
Copilot Nov 25, 2025
b8202e7
Replace blob storage URLs with new domains
Copilot Nov 25, 2025
285a81a
Merge branch 'release/9.0.3xx' into copilot/update-build-minimum-version
marcpopMSFT Nov 25, 2025
ce392ed
Replace deprecated blob storage URLs with canonical domains (#51915)
marcpopMSFT Dec 1, 2025
87e7bf1
Disable NuGetAudit for test assets
marcpopMSFT Nov 24, 2025
2cb885c
Disable NuGetAudit for test assets (#51891)
marcpopMSFT Dec 1, 2025
83a2024
Merge branch 'release/9.0.3xx' into copilot/update-build-minimum-version
marcpopMSFT Dec 2, 2025
a933e81
Merge branch 'release/9.0.3xx' of https://github.com/dotnet/sdk into …
DonnaChen888 Dec 2, 2025
62b9c63
Merge branch 'release/9.0.3xx' of https://github.com/dotnet/sdk into …
DonnaChen888 Dec 2, 2025
3eedfb2
Revert changes to Versions.props
DonnaChen888 Dec 2, 2025
0d507f2
Merge branch 'release/9.0.3xx' into copilot/update-build-minimum-version
marcpopMSFT Dec 2, 2025
239e51a
Update MicrosoftBuildMinimumVersion to 17.11.48 (#51535)
marcpopMSFT Dec 2, 2025
e247176
Merge branch 'release/9.0.3xx' into merge/release/9.0.1xx-to-release/…
DonnaChen888 Dec 3, 2025
cfdac10
Update dependencies from https://github.com/dotnet/templating build 2…
dotnet-maestro[bot] Dec 3, 2025
bfdf897
[release/9.0.3xx] Update dependencies from dotnet/templating (#51988)
DonnaChen888 Dec 3, 2025
db588fa
Merge branch 'release/9.0.3xx' into merge/release/9.0.1xx-to-release/…
DonnaChen888 Dec 3, 2025
b717589
Removed the additional internal package sources.
MiYanni Dec 4, 2025
9dad6b9
[automated] Merge branch 'release/9.0.1xx' => 'release/9.0.3xx' (#51955)
MiYanni Dec 4, 2025
f637336
Merge release/10.0.1xx into darc-release/10.0.1xx-22880266-e926-4619-…
dotnet-maestro[bot] Dec 4, 2025
1f8c488
Update dependencies from https://github.com/dotnet/dotnet build 293194
dotnet-maestro[bot] Dec 4, 2025
88f05de
[release/10.0.1xx] Source code updates from dotnet/dotnet (#52005)
DonnaChen888 Dec 4, 2025
aeccfba
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
DonnaChen888 Dec 4, 2025
141710c
[release/10.0.1xx] Reduce noise from CA1873 (#51818) (#51839)
stephentoub Dec 4, 2025
98fd665
[automated] Merge branch 'release/9.0.3xx' => 'release/10.0.1xx' (#52…
MiYanni Dec 4, 2025
e187579
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
MiYanni Dec 5, 2025
89d5ecf
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 9, 2025
ff864dc
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
SimonZhao888 Dec 10, 2025
a773fb3
Update to the 10.0.1 dotnet/dotnet build
marcpopMSFT Dec 12, 2025
2e757f2
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 12, 2025
7805285
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 15, 2025
2a2cc1b
[release/10.0.2xx] Preserve file encoding in file-based app source fi…
github-actions[bot] Dec 15, 2025
32a22dc
Initial plan
Copilot Dec 15, 2025
1b3c1b3
Switch onelocbuild to target release/10.0.2xx branch
Copilot Dec 15, 2025
e53b757
[release/10.0.2xx] Switch onelocbuild to target release/10.0.2xx bran…
marcpopMSFT Dec 15, 2025
1b7b9df
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 16, 2025
5dad5f0
[dotnet-watch] Simplify logging (#51307)
tmat Dec 16, 2025
7fe71a7
Swiatch to using the platforms version per the comment in the version…
marcpopMSFT Dec 16, 2025
9ceae80
Update minimum MSBuild version to 18.0.0
marcpopMSFT Dec 16, 2025
d3cbdc0
Update to the 10.0.1 dotnet/dotnet build (#52141)
marcpopMSFT Dec 16, 2025
ba894b6
Update minimum MSBuild version to 18.0.0 (#52219)
marcpopMSFT Dec 16, 2025
f6551d1
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 17, 2025
eb80929
[template engine cli] Remove dependency on filter definitions from co…
tmat Dec 17, 2025
d8c1eed
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 18, 2025
583915c
Completion (#52137)
tmat Dec 19, 2025
33fce23
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 19, 2025
7e922a3
Add support for IfDifferent
JanKrivanek Nov 20, 2025
fc712f6
Add support for IfDifferent in publishing targets
JanKrivanek Nov 21, 2025
77a8efe
Fix typo
JanKrivanek Nov 22, 2025
97a18eb
Add tests
JanKrivanek Dec 5, 2025
68a2585
Add default main function to tests
JanKrivanek Dec 5, 2025
f336537
Handle items with publishToOutDir, but without copyToOutDir
JanKrivanek Dec 5, 2025
9cd1b2f
Fix failing test
JanKrivanek Dec 5, 2025
054aa3a
Recursively add SetAction to dotnet nuget subcommands (#52270)
martinrrm Dec 23, 2025
83e1c41
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Dec 24, 2025
5a1a0b7
Merge branch 'release/10.0.2xx' into backport/pr-51826-to-release/10.…
DonnaChen888 Jan 4, 2026
a1cbcc4
Remove remaining usage of StyleCop (#52255)
tmat Jan 5, 2026
54ce3d7
Refactor Tool and Workload command subcommands - separate parsing and…
tmat Jan 5, 2026
7acb27e
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 15, 2025
e7b6d25
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 15, 2025
7b007f6
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 15, 2025
627b39a
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 16, 2025
c98499a
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 16, 2025
1fa734f
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 16, 2025
aec3a76
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 19, 2025
9e60200
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 19, 2025
f88ddd1
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 19, 2025
47ad307
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 19, 2025
590949d
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Dec 19, 2025
f3317c0
Merge branch 'release/10.0.2xx' into backport/pr-51826-to-release/10.…
DonnaChen888 Jan 6, 2026
61cd171
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Jan 6, 2026
514e358
Update osx arm64 helix images (#52327)
jjonescz Jan 6, 2026
4dc7ebc
Merge branch 'release/10.0.2xx' into backport/pr-51826-to-release/10.…
DonnaChen888 Jan 7, 2026
de80356
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Jan 7, 2026
98c53c6
Merge branch 'release/10.0.2xx' into locfiles/2e8dca44-9dda-4f22-9bdb…
DonnaChen888 Jan 7, 2026
adca557
Fix interaction of "csc only after msbuild" optimization and implicit…
jjonescz Jan 7, 2026
2781029
Skip obj→bin copy on build failure in CSharpCompilerCommand (#51614)
Copilot Jan 7, 2026
77274fb
MSBuild-forwarding commands refactoring (#52315)
tmat Jan 7, 2026
0d0d0ef
Initial plan
Copilot Dec 11, 2025
8fbee74
Update ManagedWinRTComponentCanBeReferenced test to use Windows SDK 1…
Copilot Dec 11, 2025
2325772
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Jan 8, 2026
c177643
Merge branch 'release/10.0.2xx' into backport/pr-51826-to-release/10.…
DonnaChen888 Jan 8, 2026
6abaec6
Merge branch 'release/10.0.2xx' into locfiles/2e8dca44-9dda-4f22-9bdb…
DonnaChen888 Jan 8, 2026
56556b2
[release/10.0.2xx] Update ManagedWinRTComponentCanBeReferenced test t…
dsplaisted Jan 8, 2026
adbd99b
Fix CS0006 errors when NuGet cache cleared during file-based app reco…
Copilot Jan 8, 2026
70eb973
Improve build task tests (#51192)
jjonescz Jan 8, 2026
79e5fa6
[release/10.0.2xx] [dotnet-watch] avoid `PlatformNotSupportedExceptio…
github-actions[bot] Jan 8, 2026
7c1e259
Fix build of multi-targeted test projects (#52254)
tmat Jan 8, 2026
3b4a6b8
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
marcpopMSFT Jan 8, 2026
bcec9ad
Remaining commands (#52352)
tmat Jan 9, 2026
dba30a8
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Jan 9, 2026
25a94a3
[release/10.0.2xx] Fix CA1859 improperly handling default interface i…
github-actions[bot] Jan 9, 2026
c545bed
Merge branch 'release/10.0.2xx' into merge/release/10.0.1xx-to-releas…
DonnaChen888 Jan 9, 2026
e59b137
[automated] Merge branch 'release/10.0.1xx' => 'release/10.0.2xx' (#5…
DonnaChen888 Jan 9, 2026
15b8f46
Include all file paths in analyzer redirecting metadata file (#52326)
jjonescz Jan 9, 2026
bf4eb30
[release/10.0.2xx] Add support for IfDifferent (#52275)
dsplaisted Jan 9, 2026
51a741c
[HotReloadAgent] fix possible `NullReferenceException` (#52367)
jonathanpeppers Jan 10, 2026
b3a4ca7
scaffold out test scenarios to demonstrate gaps
baronfel Nov 15, 2025
35ab74d
extract out spec for behavior of ProcessFrameworkReferences
baronfel Nov 15, 2025
ac59752
Update ProcessFrameworkReferences so that trimming and AOT scenarios …
baronfel Nov 15, 2025
67669e1
Update src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs
baronfel Nov 15, 2025
ff76d5e
Update documentation/specs/ProcessFrameworkReferences-outputs.md
baronfel Nov 15, 2025
800955a
Update documentation/specs/ProcessFrameworkReferences-outputs.md
baronfel Nov 15, 2025
b79d14b
patch gap in publish-for-specific-rid scenario where SelfContained is…
baronfel Nov 16, 2025
95035d6
fix some tests by updating expectations for the new world
baronfel Nov 17, 2025
24d0fb5
reduce the blast-radius of the selfcontained-assignment
baronfel Nov 17, 2025
fe04aea
make the SelfContained-fixup task correctly override earlier SDK assu…
baronfel Nov 18, 2025
a9dfa33
remove obsolete tests
baronfel Nov 18, 2025
e7e85cd
Update test/Microsoft.NET.TestFramework/Microsoft.NET.TestFramework.c…
baronfel Nov 25, 2025
811477f
minimize diffs
baronfel Dec 8, 2025
e3526c3
Add tests for no-restore publish scenarios
dsplaisted Dec 19, 2025
dec4940
Rename test class
dsplaisted Dec 22, 2025
b9c9efb
Remove ILLink targets workaround
dsplaisted Dec 22, 2025
827d062
Download AOT runtime pack for other runtime identifiers
dsplaisted Dec 22, 2025
3d6f592
Add publish RuntimeIdentifier to RuntimeIdentifiers
dsplaisted Dec 22, 2025
1dd6434
Fix interaction of RuntimeIdentifier and PublishRuntimeIdentifier
dsplaisted Dec 23, 2025
9dc508c
Fix PublishRuntimeIdentifier inference for PackAsTool projects
dsplaisted Dec 26, 2025
602ccfe
Don't default PublishRuntimeIdentifier on non-executable projects
dsplaisted Dec 28, 2025
69f31be
Fix issue detecting unsupported NativeAOT RID
dsplaisted Jan 9, 2026
510a4b3
Don't try to test cross-architecture AOT compilation on Linux
dsplaisted Jan 9, 2026
cf06096
Update src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Runt…
dsplaisted Jan 12, 2026
720b99d
[dotnet-watch ] Improves option forwarding (#52387)
tmat Jan 12, 2026
7bcd3db
release/10.0.2xx - Ensure that Trimming and AOT scenarios trigger dow…
dsplaisted Jan 12, 2026
55c2d87
Re-enable compiler toolset tests (#52401)
jjonescz Jan 13, 2026
2f8d8e9
[release/10.0.2xx] Fix a file-based app package test (#52451)
jjonescz Jan 14, 2026
45fd1b8
Reset files to main
github-actions[bot] Jan 17, 2026
45e5c0d
Merge branch 'main' of https://github.com/dotnet/sdk into merge/relea…
DonnaChen888 Jan 21, 2026
2766397
Merge branch 'main' of https://github.com/dotnet/sdk into merge/relea…
DonnaChen888 Jan 22, 2026
e519ce9
Merge branch 'main' into merge/release/10.0.3xx-to-main
DonnaChen888 Jan 22, 2026
30eda72
Fix bad merge
Youssef1313 Jan 22, 2026
e7e1349
Fix build errors
Youssef1313 Jan 22, 2026
179c094
Merge branch 'main' into merge/release/10.0.3xx-to-main
DonnaChen888 Jan 23, 2026
cf2a34e
Fix one more bad conflict resolution
Youssef1313 Jan 23, 2026
090504f
Merge branch 'main' into merge/release/10.0.3xx-to-main
DonnaChen888 Jan 26, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ extends:
publishTaskPrefix: 1ES.
populateInternalRuntimeVariables: true
runtimeSourceProperties: /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
locBranch: release/10.0.1xx
locBranch: release/10.0.2xx
# WORKAROUND: BinSkim requires the folder exist prior to scanning.
preSteps:
- powershell: New-Item -ItemType Directory -Path $(Build.SourcesDirectory)/artifacts/bin -Force
Expand Down
3 changes: 0 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
</PropertyGroup>

<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
<Import Project="$(RepositoryEngineeringDir)Analyzers.props" />

<PropertyGroup>
<IsLinux Condition="$([MSBuild]::IsOSPlatform('LINUX'))">true</IsLinux>
Expand Down Expand Up @@ -75,9 +74,7 @@
</PropertyGroup>

<PropertyGroup Condition="'$(IsTestProject)' == 'true'">
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<GenerateProgramFile>false</GenerateProgramFile>
<!-- <TestRunnerAdditionalArguments>-parallel none</TestRunnerAdditionalArguments> -->
</PropertyGroup>

<PropertyGroup>
Expand Down
32 changes: 26 additions & 6 deletions documentation/general/analyzer-redirecting.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,31 @@ And metadata at `metadata.json`:

```json
{
"AspNetCoreAnalyzers": "9.0.0-preview.5.24306.11",
"NetCoreAnalyzers": "9.0.0-preview.5.24306.7",
"WindowsDesktopAnalyzers": "9.0.0-preview.5.24306.8",
"SDKAnalyzers": "9.0.100-dev",
"WebSDKAnalyzers": "9.0.100-dev",
"AspNetCoreAnalyzers":
{
"Version": "9.0.0-preview.5.24306.11",
"Files": ["analyzers\\dotnet\\cs\\Microsoft.AspNetCore.App.Analyzers.dll"]
},
"NetCoreAnalyzers":
{
"Version": "9.0.0-preview.5.24306.7",
"Files": ["analyzers\\dotnet\\cs\\System.Text.RegularExpressions.Generator.dll"]
},
"WindowsDesktopAnalyzers":
{
"Version": "9.0.0-preview.5.24306.8",
"Files": ["analyzers\\dotnet\\System.Windows.Forms.Analyzers.dll"]
},
"SDKAnalyzers":
{
"Version": "9.0.100-dev",
"Files": ["Sdks\\Microsoft.NET.Sdk\\analyzers\\Microsoft.CodeAnalysis.NetAnalyzers.dll"]
},
"WebSDKAnalyzers":
{
"Version": "9.0.100-dev",
"Files": ["Sdks\\Microsoft.NET.Sdk.Web\\analyzers\\cs\\Microsoft.AspNetCore.Analyzers.dll"]
},
}
```

Expand All @@ -73,7 +93,7 @@ will be redirected to
{InstallDir}\SDKAnalyzers\Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
```

where `metadata.json` has `"SDKAnalyzers": "9.0.100-dev"`, because
where `metadata.json` has `"SDKAnalyzers": { "Version": "9.0.100-dev" }`, because
1. the suffix `Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll` matches, and
2. the version `9.0.100-preview.5.24307.3` has the same major and minor component (`9.0`) as the version `9.0.100-dev`
(both versions are read from the paths, not DLL metadata).
Expand Down
5 changes: 0 additions & 5 deletions eng/Analyzers.props

This file was deleted.

1 change: 0 additions & 1 deletion eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
<NETStandardLibraryVersion>2.0.3</NETStandardLibraryVersion>
<NewtonsoftJsonPackageVersion>13.0.3</NewtonsoftJsonPackageVersion>
<SystemDataSqlClientPackageVersion>4.8.6</SystemDataSqlClientPackageVersion>
<StyleCopAnalyzersPackageVersion>1.2.0-beta.435</StyleCopAnalyzersPackageVersion>
<WebDeploymentPackageVersion>4.0.5</WebDeploymentPackageVersion>
<SystemCommandLineNamingConventionBinderVersion>2.0.0-beta5.25279.2</SystemCommandLineNamingConventionBinderVersion>
<MicrosoftCodeAnalysisAnalyzerTestingVersion>1.1.2</MicrosoftCodeAnalysisAnalyzerTestingVersion>
Expand Down
13 changes: 7 additions & 6 deletions src/BuiltInTools/HotReloadAgent/HotReloadAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,12 @@ public void ApplyStaticAssetUpdate(RuntimeStaticAssetUpdate update)
/// </summary>
public static void ClearHotReloadEnvironmentVariables(Type startupHookType)
{
Environment.SetEnvironmentVariable(AgentEnvironmentVariables.DotNetStartupHooks,
RemoveCurrentAssembly(startupHookType, Environment.GetEnvironmentVariable(AgentEnvironmentVariables.DotNetStartupHooks)!));
var startupHooks = Environment.GetEnvironmentVariable(AgentEnvironmentVariables.DotNetStartupHooks);
if (!string.IsNullOrEmpty(startupHooks))
{
Environment.SetEnvironmentVariable(AgentEnvironmentVariables.DotNetStartupHooks,
RemoveCurrentAssembly(startupHookType, startupHooks));
}

Environment.SetEnvironmentVariable(AgentEnvironmentVariables.DotNetWatchHotReloadNamedPipeName, null);
Environment.SetEnvironmentVariable(AgentEnvironmentVariables.HotReloadDeltaClientLogMessages, null);
Expand All @@ -307,10 +311,7 @@ public static void ClearHotReloadEnvironmentVariables(Type startupHookType)
// internal for testing
internal static string RemoveCurrentAssembly(Type startupHookType, string environment)
{
if (environment is "")
{
return environment;
}
Debug.Assert(!string.IsNullOrEmpty(environment), $"{nameof(environment)} must be set");

var comparison = Path.DirectorySeparatorChar == '\\' ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;

Expand Down
7 changes: 3 additions & 4 deletions src/BuiltInTools/Watch.Aspire/DotNetWatchLauncher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ public static async Task<bool> RunAsync(string workingDirectory, DotNetWatchOpti
{
var globalOptions = new GlobalOptions()
{
Quiet = options.IsQuiet,
Verbose = options.IsVerbose,
LogLevel = options.LogLevel,
NoHotReload = false,
NonInteractive = true,
};
Expand Down Expand Up @@ -42,10 +41,10 @@ public static async Task<bool> RunAsync(string workingDirectory, DotNetWatchOpti
var muxerPath = Path.GetFullPath(Path.Combine(options.SdkDirectory, "..", "..", "dotnet" + PathUtilities.ExecutableExtension));

var console = new PhysicalConsole(TestFlags.None);
var reporter = new ConsoleReporter(console, globalOptions.Verbose, globalOptions.Quiet, suppressEmojis: false);
var reporter = new ConsoleReporter(console, suppressEmojis: false);
var environmentOptions = EnvironmentOptions.FromEnvironment(muxerPath);
var processRunner = new ProcessRunner(environmentOptions.GetProcessCleanupTimeout(isHotReloadEnabled: true));
var loggerFactory = new LoggerFactory(reporter);
var loggerFactory = new LoggerFactory(reporter, globalOptions.LogLevel);
var logger = loggerFactory.CreateLogger(DotNetWatchContext.DefaultLogComponentName);

using var context = new DotNetWatchContext()
Expand Down
7 changes: 3 additions & 4 deletions src/BuiltInTools/Watch.Aspire/DotNetWatchOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Collections.Immutable;
using System.CommandLine;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch;

Expand All @@ -17,8 +18,7 @@ internal sealed class DotNetWatchOptions

public required string ProjectPath { get; init; }
public required ImmutableArray<string> ApplicationArguments { get; init; }
public bool IsVerbose { get; init; }
public bool IsQuiet { get; init; }
public LogLevel LogLevel { get; init; }
public bool NoLaunchProfile { get; init; }

public static bool TryParse(string[] args, [NotNullWhen(true)] out DotNetWatchOptions? options)
Expand Down Expand Up @@ -71,8 +71,7 @@ public static bool TryParse(string[] args, [NotNullWhen(true)] out DotNetWatchOp
{
SdkDirectory = parseResult.GetRequiredValue(sdkOption),
ProjectPath = parseResult.GetRequiredValue(projectOption),
IsQuiet = parseResult.GetValue(quietOption),
IsVerbose = parseResult.GetValue(verboseOption),
LogLevel = parseResult.GetValue(quietOption) ? LogLevel.Warning : parseResult.GetValue(verboseOption) ? LogLevel.Debug : LogLevel.Information,
ApplicationArguments = [.. parseResult.GetValue(applicationArguments) ?? []],
NoLaunchProfile = parseResult.GetValue(noLaunchProfileOption),
};
Expand Down
4 changes: 2 additions & 2 deletions src/BuiltInTools/Watch/AppModels/WebApplicationAppModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ public bool IsServerSupported(ProjectGraphNode projectNode, ILogger logger)
{
if (context.EnvironmentOptions.SuppressBrowserRefresh)
{
logger.Log(MessageDescriptor.SkippingConfiguringBrowserRefresh_SuppressedViaEnvironmentVariable.WithSeverityWhen(MessageSeverity.Error, RequiresBrowserRefresh), EnvironmentVariables.Names.SuppressBrowserRefresh);
logger.Log(MessageDescriptor.SkippingConfiguringBrowserRefresh_SuppressedViaEnvironmentVariable.WithLevelWhen(LogLevel.Error, RequiresBrowserRefresh), EnvironmentVariables.Names.SuppressBrowserRefresh);
return false;
}

if (!projectNode.IsNetCoreApp(minVersion: s_minimumSupportedVersion))
{
logger.Log(MessageDescriptor.SkippingConfiguringBrowserRefresh_TargetFrameworkNotSupported.WithSeverityWhen(MessageSeverity.Error, RequiresBrowserRefresh));
logger.Log(MessageDescriptor.SkippingConfiguringBrowserRefresh_TargetFrameworkNotSupported.WithLevelWhen(LogLevel.Error, RequiresBrowserRefresh));
return false;
}

Expand Down
3 changes: 3 additions & 0 deletions src/BuiltInTools/Watch/Context/EnvironmentOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.

using System.Diagnostics;
using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch
{
Expand Down Expand Up @@ -35,6 +36,7 @@ internal sealed record EnvironmentOptions(
bool SuppressBrowserRefresh = false,
bool SuppressEmojis = false,
bool RestartOnRudeEdit = false,
LogLevel? CliLogLevel = null,
string? AutoReloadWebSocketHostName = null,
int? AutoReloadWebSocketPort = null,
string? BrowserPath = null,
Expand All @@ -53,6 +55,7 @@ internal sealed record EnvironmentOptions(
SuppressBrowserRefresh: EnvironmentVariables.SuppressBrowserRefresh,
SuppressEmojis: EnvironmentVariables.SuppressEmojis,
RestartOnRudeEdit: EnvironmentVariables.RestartOnRudeEdit,
CliLogLevel: EnvironmentVariables.CliLogLevel,
AutoReloadWebSocketHostName: EnvironmentVariables.AutoReloadWSHostName,
AutoReloadWebSocketPort: EnvironmentVariables.AutoReloadWSPort,
BrowserPath: EnvironmentVariables.BrowserPath,
Expand Down
21 changes: 19 additions & 2 deletions src/BuiltInTools/Watch/Context/EnvironmentVariables.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch;

internal static class EnvironmentVariables
Expand All @@ -20,7 +22,19 @@ public static class Names
public const string SuppressBrowserRefresh = "DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH";
}

public static bool VerboseCliOutput => ReadBool("DOTNET_CLI_CONTEXT_VERBOSE");
public static LogLevel? CliLogLevel
{
get
{
var value = Environment.GetEnvironmentVariable("DOTNET_CLI_CONTEXT_VERBOSE");
return string.Equals(value, "trace", StringComparison.OrdinalIgnoreCase)
? LogLevel.Trace
: ParseBool(value)
? LogLevel.Debug
: null;
}
}

public static bool IsPollingEnabled => ReadBool("DOTNET_USE_POLLING_FILE_WATCHER");
public static bool SuppressEmojis => ReadBool("DOTNET_WATCH_SUPPRESS_EMOJIS");
public static bool RestartOnRudeEdit => ReadBool("DOTNET_WATCH_RESTART_ON_RUDE_EDIT");
Expand All @@ -46,11 +60,14 @@ public static class Names
public static string? BrowserPath => Environment.GetEnvironmentVariable("DOTNET_WATCH_BROWSER_PATH");

private static bool ReadBool(string variableName)
=> Environment.GetEnvironmentVariable(variableName) is var value && (value == "1" || bool.TryParse(value, out var boolValue) && boolValue);
=> ParseBool(Environment.GetEnvironmentVariable(variableName));

private static TimeSpan? ReadTimeSpan(string variableName)
=> Environment.GetEnvironmentVariable(variableName) is var value && long.TryParse(value, out var intValue) && intValue >= 0 ? TimeSpan.FromMilliseconds(intValue) : null;

private static int? ReadInt(string variableName)
=> Environment.GetEnvironmentVariable(variableName) is var value && int.TryParse(value, out var intValue) ? intValue : null;

private static bool ParseBool(string? value)
=> value == "1" || bool.TryParse(value, out var boolValue) && boolValue;
}
5 changes: 3 additions & 2 deletions src/BuiltInTools/Watch/Context/GlobalOptions.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch;

internal sealed class GlobalOptions
{
public bool Quiet { get; init; }
public bool Verbose { get; init; }
public LogLevel LogLevel { get; init; }
public bool NoHotReload { get; init; }
public bool NonInteractive { get; init; }

Expand Down
2 changes: 1 addition & 1 deletion src/BuiltInTools/Watch/HotReload/CompilationHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ void ReportDiagnostic(Diagnostic diagnostic, MessageDescriptor descriptor, strin
{
errorsToDisplayInApp.Add(MessageDescriptor.RestartingApplicationToApplyChanges.GetMessage());
}
else if (descriptor.Severity != MessageSeverity.None)
else if (descriptor.Level != LogLevel.None)
{
errorsToDisplayInApp.Add(descriptor.GetMessage(args));
}
Expand Down
2 changes: 1 addition & 1 deletion src/BuiltInTools/Watch/HotReload/HotReloadDotNetWatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public HotReloadDotNetWatcher(DotNetWatchContext context, IConsole console, IRun
_runtimeProcessLauncherFactory = runtimeProcessLauncherFactory;
if (!context.Options.NonInteractive)
{
var consoleInput = new ConsoleInputReader(_console, context.Options.Quiet, context.EnvironmentOptions.SuppressEmojis);
var consoleInput = new ConsoleInputReader(_console, context.Options.LogLevel, context.EnvironmentOptions.SuppressEmojis);

var noPrompt = context.EnvironmentOptions.RestartOnRudeEdit;
if (noPrompt)
Expand Down
10 changes: 2 additions & 8 deletions src/BuiltInTools/Watch/HotReload/IncrementalMSBuildWorkspace.cs
Original file line number Diff line number Diff line change
Expand Up @@ -230,16 +230,13 @@ private Task UpdateSolutionAsync(Solution newSolution, string operationDisplayNa

private async Task ReportSolutionFilesAsync(Solution solution, int updateId, string operationDisplayName, CancellationToken cancellationToken)
{
#if DEBUG
_logger.LogDebug("Solution: {Path}", solution.FilePath);
_logger.LogDebug("Solution after {Operation}: v{Version}", operationDisplayName, updateId);

if (!_logger.IsEnabled(LogLevel.Debug))
if (!_logger.IsEnabled(LogLevel.Trace))
{
return;
}

_logger.LogDebug("Solution after {Operation}: v{Version}", operationDisplayName, updateId);

foreach (var project in solution.Projects)
{
_logger.LogDebug(" Project: {Path}", project.FilePath);
Expand All @@ -265,8 +262,5 @@ async ValueTask InspectDocumentAsync(TextDocument document, string kind)
var text = await document.GetTextAsync(cancellationToken);
_logger.LogDebug(" {Kind}: {FilePath} [{Checksum}]", kind, document.FilePath, Convert.ToBase64String(text.GetChecksum().ToArray()));
}
#else
await Task.CompletedTask;
#endif
}
}
6 changes: 4 additions & 2 deletions src/BuiltInTools/Watch/UI/ConsoleInputReader.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch
{
internal sealed class ConsoleInputReader(IConsole console, bool quiet, bool suppressEmojis)
internal sealed class ConsoleInputReader(IConsole console, LogLevel logLevel, bool suppressEmojis)
{
private readonly object _writeLock = new();

public async Task<ConsoleKey> GetKeyAsync(string prompt, Func<ConsoleKeyInfo, bool> validateInput, CancellationToken cancellationToken)
{
if (quiet)
if (logLevel > LogLevel.Information)
{
return ConsoleKey.Escape;
}
Expand Down
37 changes: 10 additions & 27 deletions src/BuiltInTools/Watch/UI/ConsoleReporter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@ namespace Microsoft.DotNet.Watch
/// This API supports infrastructure and is not intended to be used
/// directly from your code. This API may change or be removed in future releases.
/// </summary>
internal sealed class ConsoleReporter(IConsole console, bool verbose, bool quiet, bool suppressEmojis) : IReporter, IProcessOutputReporter
internal sealed class ConsoleReporter(IConsole console, bool suppressEmojis) : IReporter, IProcessOutputReporter
{
public bool IsVerbose { get; } = verbose;
public bool IsQuiet { get; } = quiet;
public bool SuppressEmojis { get; } = suppressEmojis;

private readonly Lock _writeLock = new();
Expand Down Expand Up @@ -50,33 +48,18 @@ private void WriteLine(TextWriter writer, string message, ConsoleColor? color, E
}
}

public void Report(EventId id, Emoji emoji, MessageSeverity severity, string message)
public void Report(EventId id, Emoji emoji, LogLevel level, string message)
{
switch (severity)
var color = level switch
{
case MessageSeverity.Error:
// Use stdout for error messages to preserve ordering with respect to other output.
WriteLine(console.Error, message, ConsoleColor.Red, emoji);
break;
LogLevel.Critical or LogLevel.Error => ConsoleColor.Red,
LogLevel.Warning => ConsoleColor.Yellow,
LogLevel.Information => (ConsoleColor?)null,
_ => ConsoleColor.DarkGray,
};

case MessageSeverity.Warning:
WriteLine(console.Error, message, ConsoleColor.Yellow, emoji);
break;

case MessageSeverity.Output:
if (!IsQuiet)
{
WriteLine(console.Error, message, color: null, emoji);
}
break;

case MessageSeverity.Verbose:
if (IsVerbose)
{
WriteLine(console.Error, message, ConsoleColor.DarkGray, emoji);
}
break;
}
// Use stdout for error messages to preserve ordering with respect to other output.
WriteLine(console.Error, message, color, emoji);
}
}
}
Loading
Loading