Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
5d8f918
Allow charset to be `unset`
rsking Jul 22, 2024
56ccb8e
Merge branch 'release/10.0.1xx' into backport/pr-42266-to-release/10.…
SimonZhao888 Sep 23, 2025
23ff901
Update to september implicit versions for GA daily build testing
marcpopMSFT Sep 23, 2025
9f0aecc
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 24, 2025
ee9bc9e
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 24, 2025
573598c
Browser tests (#50844)
tmat Sep 24, 2025
d1c9c0c
[release/10.0.1xx] Allow charset to be `unset` (#50963)
MiYanni Sep 25, 2025
d1ace12
Merge branch 'release/10.0.1xx' into locfiles/114ff122-307b-459a-9a37…
SimonZhao888 Sep 25, 2025
7956c92
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 25, 2025
12f56dc
[release/10.0.1xx] Update dependencies from microsoft/testfx (#50997)
SimonZhao888 Sep 25, 2025
dd2ccaa
Merge branch 'release/10.0.1xx' into locfiles/114ff122-307b-459a-9a37…
SimonZhao888 Sep 25, 2025
effb15d
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
MiYanni Sep 26, 2025
9e204a9
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 26, 2025
c0259bb
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 26, 2025
d93264f
Register SIGTERM signal
tmat Sep 24, 2025
760dba4
Add test
tmat Sep 24, 2025
013e97d
Update tests
tmat Sep 24, 2025
874a9ed
Fix test
tmat Sep 24, 2025
1a573af
dotnet test for MTP: localize test summary + update command descripti…
Youssef1313 Sep 26, 2025
0629bc0
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 26, 2025
61c329e
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 26, 2025
f28bd1f
Merge branch 'release/10.0.1xx' into locfiles/ee993b60-50a2-4cf8-8e33…
SimonZhao888 Sep 26, 2025
65c89e1
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
SimonZhao888 Sep 26, 2025
9798e3b
[release/10.0.1xx] Update dependencies from microsoft/testfx (#51016)
SimonZhao888 Sep 26, 2025
b62cacf
Misc Json PostAction fixes (#50977)
Youssef1313 Sep 26, 2025
571fd37
Run test template tests with Arcade
Youssef1313 Sep 26, 2025
ac67de5
Update sdk-build.yml
Youssef1313 Sep 26, 2025
35c5339
Update analyzer redirecting VS extension (#50496)
jjonescz Sep 26, 2025
7e865a2
Only test templates
Youssef1313 Sep 26, 2025
99a5ce1
Allow SDKs to overwrite default file-based app properties (#51004)
jjonescz Sep 26, 2025
161caf7
dotnet SIGTERM signal handler registration (#50983)
marcpopMSFT Sep 26, 2025
2ab81d4
Improve where file-level directives are added (#50956)
jjonescz Sep 26, 2025
30b1fb4
Notify DCP of terminated session when process exits on its own
tmat Sep 24, 2025
0dd4e52
Fix tests
tmat Sep 26, 2025
537aa47
Added job for TestTemplatesCG to run only on official builds. Cleaned…
MiYanni Sep 26, 2025
807be93
[release/10.0.1xx] Source code updates from dotnet/dotnet (#50901)
dotnet-maestro[bot] Sep 26, 2025
b8da824
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 27, 2025
578883e
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 27, 2025
71b03cc
Backflow from https://github.com/dotnet/dotnet / e1eaf1b build 284895
dotnet-maestro[bot] Sep 27, 2025
12c2e82
Update dependencies from https://github.com/dotnet/dotnet build 284895
dotnet-maestro[bot] Sep 27, 2025
1afee21
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 27, 2025
2ca256f
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 28, 2025
a7253ca
Merge branch 'release/10.0.1xx' of https://github.com/dotnet/sdk into…
Sep 28, 2025
00f9c9f
Initial plan
Copilot Sep 25, 2025
bc5d218
Add tool-specific package identity descriptions to replace generic ex…
Copilot Sep 25, 2025
d559dbf
Update copilot-instructions with dogfood testing approach for CLI cha…
Copilot Sep 25, 2025
e653e71
Refactor to use parameterized package identity argument methods per r…
Copilot Sep 25, 2025
fea93b8
Update CLI snapshot test baselines for tool-specific package examples
Copilot Sep 25, 2025
3b917c6
Use single format string with placeholders instead of separate resour…
Copilot Sep 25, 2025
341690d
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 29, 2025
115394c
Remove condition from NuGet.Localization package reference
mthalman Sep 29, 2025
26c7de3
Remove condition from NuGet.Localization package reference (#51053)
mthalman Sep 29, 2025
586e6d2
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 29, 2025
936ff76
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Sep 29, 2025
9b87c9c
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-3f062e95-4…
SimonZhao888 Sep 30, 2025
baa436b
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-9f8cb3f7-8…
SimonZhao888 Sep 30, 2025
783505b
Backflow from https://github.com/dotnet/dotnet / 8aba88f build 285155
dotnet-maestro[bot] Sep 30, 2025
f3ef936
Update dependencies from https://github.com/dotnet/dotnet build 285155
dotnet-maestro[bot] Sep 30, 2025
6607e07
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Sep 30, 2025
750e820
Merge branch 'release/10.0.1xx' into locfiles/ec3a9062-a136-4d97-b635…
SimonZhao888 Sep 30, 2025
5b52129
[dotnet-watch] Notify DCP of terminated session when process exits on…
marcpopMSFT Sep 30, 2025
35066e5
[release/10.0.1xx] Fix `dnx --help` and tool commands to use valid .N…
MiYanni Oct 1, 2025
a05f402
Merge release/10.0.1xx into darc-release/10.0.1xx-3f062e95-4162-4601-…
dotnet-maestro[bot] Oct 1, 2025
6d7f018
Update dependencies from https://github.com/dotnet/dotnet build 285185
dotnet-maestro[bot] Oct 1, 2025
bc8ac95
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 1, 2025
1901b78
[automated] Update man pages
invalid-email-address Oct 1, 2025
5c69c4d
Convert numeric telemetry parameters to measurements
Copilot Sep 30, 2025
766a85b
port SdkResolver and MSBuild Telemetry fixes from RC2 to GA
baronfel Oct 1, 2025
809a1a2
Add slnx to editorconfig template
lbussell Oct 1, 2025
8ae35e2
Update baseline
lbussell Oct 1, 2025
d9308af
Pick rc2 fixes for msbuild telemetry and sdkresolver to GA (#51090)
nagilson Oct 1, 2025
95d125e
[release/10.0.1xx] URL-encode scoped CSS Link headers for non-ASCII p…
Copilot Oct 2, 2025
ebc4210
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 2, 2025
347c68a
[automated] Update man pages (#51076)
marcpopMSFT Oct 2, 2025
8c523a9
Disable the hard link copy as this was causing the exe bundle to pick…
marcpopMSFT Oct 2, 2025
8f5ca8f
Re-enable telemetry for global.json state - set error writer to swall…
elinor-fung Oct 2, 2025
db38a80
Convert numeric telemetry parameters to measurements for better analy…
marcpopMSFT Oct 2, 2025
b428c77
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 3, 2025
9735fb9
Update the list of supported portable RIDs for the tool packs in our …
jkoritzinsky Oct 3, 2025
9066b7e
Remove dnx.ps1
dsplaisted Oct 3, 2025
e55c60d
More LLM detections for other CLI agents + alter TL behavior in the p…
baronfel Oct 3, 2025
cec531e
Run test template tests with Arcade (#51020)
MiYanni Oct 3, 2025
9e9a21c
Merge remote-tracking branch 'upstream/release/10.0.1xx' into darc-re…
nagilson Oct 3, 2025
fa2dabb
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-9f8cb3f7-8…
nagilson Oct 3, 2025
743a240
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 4, 2025
887e2dd
Fix bad merge
nagilson Oct 6, 2025
1947fa0
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 6, 2025
69d4588
Fix SWID tag
joeloff Oct 6, 2025
8704d51
Fix typo
joeloff Oct 6, 2025
59d99ae
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 7, 2025
3b289db
Update TestAsset
Youssef1313 Oct 7, 2025
5450701
Update TestProject.csproj
Youssef1313 Oct 7, 2025
41851dd
Disallow quotes in file-level directives (#51119)
jjonescz Oct 7, 2025
cf932ba
[Hot Reload] Only enable ASP.NET debug logging if logging level is Tr…
tmat Oct 7, 2025
b8c692b
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-3f062e95-4…
nagilson Oct 7, 2025
a48d94a
Allow empty file-level directive values (#51078)
jjonescz Oct 7, 2025
ead9fee
Fix SWID tag (#51138)
joeloff Oct 7, 2025
81261fc
Avoid error when building file-based libraries (#51063)
jjonescz Oct 7, 2025
c8a1c7b
[release/10.0.1xx] Source code updates from dotnet/dotnet (#51032)
nagilson Oct 7, 2025
79520ee
Merge branch 'release/10.0.1xx' into darc-release/10.0.1xx-9f8cb3f7-8…
nagilson Oct 7, 2025
c637238
Remove dnx.ps1 (#51120)
marcpopMSFT Oct 7, 2025
e2c194e
Disable the hard link copy as this was causing the exe bundle to pick…
marcpopMSFT Oct 7, 2025
faa43b0
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
marcpopMSFT Oct 7, 2025
2ac0777
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Oct 7, 2025
f49694f
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
dotnet-bot Oct 7, 2025
530298a
[release/10.0.1xx] Update dependencies from microsoft/testfx (#51036)
nagilson Oct 7, 2025
7158d25
Localized file check-in by OneLocBuild Task: Build definition ID 140:…
marcpopMSFT Oct 7, 2025
e9aeca4
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 8, 2025
5b2a138
Update MSTest to stable 4.0.0 (#51167)
Youssef1313 Oct 8, 2025
ec8d85f
[release/10.0.1xx] Source code updates from dotnet/dotnet (#51163)
dotnet-maestro[bot] Oct 8, 2025
f0319e5
[dotnet-watch] Auto-restart project on runtime rude edit (#51073)
tmat Oct 8, 2025
7b70825
[release/10.0.1xx] Update dependencies from microsoft/testfx (#51165)
SimonZhao888 Oct 9, 2025
fa153ed
Update dependencies from https://github.com/microsoft/testfx build 20…
dotnet-maestro[bot] Oct 9, 2025
1735ee5
Merge branch 'release/10.0.1xx' into backport/pr-51082-to-release/10.…
SimonZhao888 Oct 9, 2025
0bf7ad5
[release/10.0.1xx] Update dependencies from microsoft/testfx (#51176)
SimonZhao888 Oct 9, 2025
328349c
[release/10.0.1xx] Enable CollatePackageDownloads (#51080)
github-actions[bot] Oct 9, 2025
7d74274
[release/10.0.1xx] Add `.slnx` to default `.editorconfig` template (#…
marcpopMSFT Oct 9, 2025
404ff4a
Update to september implicit versions for GA daily build testing (#50…
marcpopMSFT Oct 9, 2025
cf6f17c
Backflow from https://github.com/dotnet/dotnet / f448387 build 286402
dotnet-maestro[bot] Oct 10, 2025
f5b319e
Merge release/10.0.1xx into darc-release/10.0.1xx-42e4be27-1453-413b-…
dotnet-maestro[bot] Oct 10, 2025
ca9b525
Update dependencies from https://github.com/dotnet/dotnet build 286402
dotnet-maestro[bot] Oct 10, 2025
995c4b3
Delete the duplicate test methods
Oct 10, 2025
1001343
[release/10.0.1xx] Source code updates from dotnet/dotnet (#51186)
SimonZhao888 Oct 10, 2025
20b1f64
Merge branch 'release/10.0.2xx' of https://github.com/dotnet/sdk into…
Oct 10, 2025
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
5 changes: 5 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ Testing:
- Examples:
- `dotnet test test/dotnet.Tests/dotnet.Tests.csproj --filter "Name~ItShowsTheAppropriateMessageToTheUser"`
- `dotnet exec artifacts/bin/redist/Debug/dotnet.Tests.dll -method "*ItShowsTheAppropriateMessageToTheUser*"`
- To test CLI command changes:
- Build the redist SDK: `./build.sh` from repo root
- 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

Output Considerations:
- When considering how output should look, solicit advice from baronfel.
Expand Down
15 changes: 15 additions & 0 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ extends:
oneESCompat:
templateFolderName: templates-official
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
# WORKAROUND: BinSkim requires the folder exist prior to scanning.
Expand Down Expand Up @@ -141,6 +142,14 @@ extends:
_SignType: real
dependsOn: Official_windows_x64
downloadManifestMsiPackages: true
### TestTemplatesCG ###
# Note: This job is only used to allow the test templates to be built locally on the agent as opposed to Helix.
# The tests acquire the templates' PackageReferences from NuGet, which allows them to be scanned by CG (component governance).
# CG is only ran internally, so this job makes sense to only run alongside of the official jobs.
- categoryName: TestTemplatesCG
testProjects: $(Build.SourcesDirectory)/test/dotnet-new.IntegrationTests/dotnet-new.IntegrationTests.csproj
testRunnerAdditionalArguments: -class Microsoft.DotNet.Cli.New.IntegrationTests.DotnetNewTestTemplatesTests
publishXunitResults: true

############### LINUX ###############
- template: /eng/pipelines/templates/jobs/sdk-job-matrix.yml@self
Expand All @@ -153,6 +162,7 @@ extends:
oneESCompat:
templateFolderName: templates-official
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')) }}:
timeoutInMinutes: 90
Expand Down Expand Up @@ -235,6 +245,7 @@ extends:
oneESCompat:
templateFolderName: templates-official
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')) }}:
timeoutInMinutes: 90
Expand All @@ -260,6 +271,8 @@ extends:
vmImage: macOS-latest
os: macOS
helixTargetQueue: osx.13.arm64
populateInternalRuntimeVariables: true
runtimeSourceProperties: /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)
macOSJobParameterSets:
- categoryName: TestBuild
targetArchitecture: arm64
Expand All @@ -270,7 +283,9 @@ extends:
- template: /eng/dotnet-format/dotnet-format-integration.yml@self
parameters:
oneESCompat:
templateFolderName: templates-official
publishTaskPrefix: 1ES.
populateInternalRuntimeVariables: true
runtimeSourceProperties: /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64)

############### PUBLISH STAGE ###############
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
<ItemGroup Condition="$(MicrosoftAspNetCoreAppRefPackageVersion.StartsWith('$(_TargetFrameworkVersionWithoutV)'))">
<KnownFrameworkReference Update="Microsoft.AspNetCore.App">
<LatestRuntimeFrameworkVersion>$(MicrosoftAspNetCoreAppRefPackageVersion)</LatestRuntimeFrameworkVersion>
<RuntimePackRuntimeIdentifiers>${SupportedRuntimeIdentifiers}</RuntimePackRuntimeIdentifiers>
<RuntimePackRuntimeIdentifiers>$(SupportedRuntimeIdentifiers)</RuntimePackRuntimeIdentifiers>
<TargetingPackVersion>$(MicrosoftAspNetCoreAppRefPackageVersion)</TargetingPackVersion>
<DefaultRuntimeFrameworkVersion>$(MicrosoftAspNetCoreAppRefPackageVersion)</DefaultRuntimeFrameworkVersion>
</KnownFrameworkReference>
Expand Down
6 changes: 3 additions & 3 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
<NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Basic.CompilerLog.Util" Version="0.9.9" />
<PackageVersion Include="Basic.CompilerLog.Util" Version="0.9.18" />
<PackageVersion Include="AwesomeAssertions" Version="$(AwesomeAssertionsVersion)" />
<PackageVersion Include="BenchmarkDotNet" Version="$(BenchmarkDotNetPackageVersion)" />
<PackageVersion Include="AwesomeAssertions.Json" Version="$(AwesomeAssertionsJsonVersion)" />
<PackageVersion Include="MessagePack" Version="2.5.187" />
<PackageVersion Include="MessagePack" Version="3.1.4" />
<PackageVersion Include="MicroBuild.Plugins.SwixBuild.Dotnet" Version="1.1.87-gba258badda" />
<PackageVersion Include="Microsoft.ApplicationInsights" Version="$(MicrosoftApplicationInsightsPackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.DeveloperCertificates.XPlat" Version="$(MicrosoftAspNetCoreDeveloperCertificatesXPlatPackageVersion)" />
Expand Down Expand Up @@ -94,7 +94,7 @@
<PackageVersion Include="Microsoft.WixToolset.Heat" Version="$(MicrosoftWixToolsetSdkVersion)" />
<PackageVersion Include="Microsoft.WixToolset.Util.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
<PackageVersion Include="Microsoft.WixToolset.UI.wixext" Version="$(MicrosoftWixToolsetSdkVersion)" />
<PackageVersion Include="MSBuild.StructuredLogger" Version="2.2.386" />
<PackageVersion Include="MSBuild.StructuredLogger" Version="2.3.45" />
<PackageVersion Include="Moq" Version="$(MoqPackageVersion)" />
<PackageVersion Include="NETStandard.Library.NETFramework" Version="$(NETStandardLibraryNETFrameworkVersion)" />
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
Expand Down
2 changes: 2 additions & 0 deletions NuGet.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
<packageSources>
<clear />
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
<!-- Begin: Package sources from microsoft-testfx -->
<!-- End: Package sources from microsoft-testfx -->
<!-- Begin: Package sources from dotnet-aspire -->
<!-- End: Package sources from dotnet-aspire -->
<!-- Begin: Package sources from dotnet-runtime -->
Expand Down
46 changes: 0 additions & 46 deletions build/RunTestTemplateTests.ps1

This file was deleted.

36 changes: 28 additions & 8 deletions documentation/general/analyzer-redirecting.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,36 @@ Targeting an SDK (and hence also loading analyzers) with newer major version in

- Note that when `IAnalyzerAssemblyRedirector` is involved, Roslyn is free to not use shadow copy loading and instead load the DLLs directly.

- It is possible to opt out of analyzer redirecting by setting environment variable `DOTNET_ANALYZER_REDIRECTING=0`.
That is an unsupported scenario though and compiler version mismatch errors will likely occur.

## Details

The VSIX contains some analyzers, for example:

```
AspNetCoreAnalyzers\9.0.0-preview.5.24306.11\analyzers\dotnet\cs\Microsoft.AspNetCore.App.Analyzers.dll
NetCoreAnalyzers\9.0.0-preview.5.24306.7\analyzers\dotnet\cs\System.Text.RegularExpressions.Generator.dll
WindowsDesktopAnalyzers\9.0.0-preview.5.24306.8\analyzers\dotnet\System.Windows.Forms.Analyzers.dll
SDKAnalyzers\9.0.100-dev\Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
WebSDKAnalyzers\9.0.100-dev\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Analyzers.dll
AspNetCoreAnalyzers\analyzers\dotnet\cs\Microsoft.AspNetCore.App.Analyzers.dll
NetCoreAnalyzers\analyzers\dotnet\cs\System.Text.RegularExpressions.Generator.dll
WindowsDesktopAnalyzers\analyzers\dotnet\System.Windows.Forms.Analyzers.dll
SDKAnalyzers\Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
WebSDKAnalyzers\Sdks\Microsoft.NET.Sdk.Web\analyzers\cs\Microsoft.AspNetCore.Analyzers.dll
```

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",
}
```

Given an analyzer assembly load going through our `IAnalyzerAssemblyRedirector`,
we will redirect it if the original path of the assembly being loaded matches the path of a VSIX-deployed analyzer -
only segments of these paths starting after the version segment are compared,
only relevant segments (see example below) of these paths are compared,
plus the major and minor component of the versions must match.

For example, the analyzer
Expand All @@ -54,15 +69,20 @@ C:\Program Files\dotnet\sdk\9.0.100-preview.5.24307.3\Sdks\Microsoft.NET.Sdk\ana
will be redirected to

```
{VSIX}\SDKAnalyzers\9.0.100-dev\Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
{VSIX}\SDKAnalyzers\Sdks\Microsoft.NET.Sdk\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll
```

because
where `metadata.json` has `"SDKAnalyzers": "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).

Analyzers that cannot be matched will continue to be loaded from the SDK
(and will fail to load if they reference Roslyn that is newer than is in VS).

### Implementation

Analyzer DLLs are contained in transport package `VS.Redist.Common.Net.Core.SDK.RuntimeAnalyzers`.
The redirecting logic lives in "system" VS extension `Microsoft.Net.Sdk.AnalyzerRedirecting`.

[torn-sdk]: https://github.com/dotnet/sdk/issues/42087
54 changes: 35 additions & 19 deletions documentation/manpages/sdk/dotnet-build.1
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@
. ftr VB CB
. ftr VBI CBI
.\}
.TH "dotnet-build" "1" "2025-06-13" "" ".NET Documentation"
.TH "dotnet-build" "1" "2025-09-30" "" ".NET Documentation"
.hy
.SH dotnet build
.PP
\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1 SDK and later versions
\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 6 and later versions
.SH NAME
.PP
dotnet-build - Builds a project and all of its dependencies.
dotnet-build - Builds a project, solution, or file-based app and all of its dependencies.
.SH SYNOPSIS
.IP
.nf
\f[C]
dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
[--disable-build-servers]
Expand All @@ -35,7 +35,7 @@ dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
[-o|--output <OUTPUT_DIRECTORY>]
[-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--self-contained [true|false]] [--source <SOURCE>]
[-sc|--self-contained [true|false]] [--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

Expand All @@ -44,11 +44,11 @@ dotnet build -h|--help
.fi
.SH DESCRIPTION
.PP
The \f[V]dotnet build\f[R] command builds the project and its dependencies into a set of binaries.
The \f[V]dotnet build\f[R] command builds the project, solution, or file-based app and its dependencies into a set of binaries.
The binaries include the project\[cq]s code in Intermediate Language (IL) files with a \f[I].dll\f[R] extension.
Depending on the project type and settings, other files may be included, such as:
.IP \[bu] 2
An executable that can be used to run the application, if the project type is an executable targeting .NET Core 3.0 or later.
An executable that can be used to run the application.
.IP \[bu] 2
Symbol files used for debugging with a \f[I].pdb\f[R] extension.
.IP \[bu] 2
Expand All @@ -58,12 +58,6 @@ A \f[I].runtimeconfig.json\f[R] file, which specifies the shared runtime and its
.IP \[bu] 2
Other libraries that the project depends on (via project references or NuGet package references).
.PP
For executable projects targeting versions earlier than .NET Core 3.0, library dependencies from NuGet are typically NOT copied to the output folder.
They\[cq]re resolved from the NuGet global packages folder at run time.
With that in mind, the product of \f[V]dotnet build\f[R] isn\[cq]t ready to be transferred to another machine to run.
To create a version of the application that can be deployed, you need to publish it (for example, with the dotnet publish command).
For more information, see .NET Application Deployment.
.PP
For executable projects targeting .NET Core 3.0 and later, library dependencies are copied to the output folder.
This means that if there isn\[cq]t any other publish-specific logic (such as Web projects have), the build output should be deployable.
.SS Implicit restore
Expand Down Expand Up @@ -98,7 +92,8 @@ To produce a library, omit the \f[V]<OutputType>\f[R] property or change its val
The IL DLL for a library doesn\[cq]t contain entry points and can\[cq]t be executed.
.SS MSBuild
.PP
\f[V]dotnet build\f[R] uses MSBuild to build the project, so it supports both parallel and incremental builds.
\f[V]dotnet build\f[R] uses MSBuild to build the project, solution, or file-based app.
It supports both parallel and incremental builds.
For more information, see Incremental Builds.
.PP
In addition to its options, the \f[V]dotnet build\f[R] command accepts MSBuild options, such as \f[V]-p\f[R] for setting properties or \f[V]-l\f[R] to define a logger.
Expand All @@ -117,10 +112,19 @@ If the download is still running when this command finishes, the download is sto
For more information, see Advertising manifests.
.SH ARGUMENTS
.PP
\f[V]PROJECT | SOLUTION\f[R]
\f[V]PROJECT | SOLUTION | FILE\f[R]
.PP
The project or solution file to build.
If a project or solution file isn\[cq]t specified, MSBuild searches the current working directory for a file that has a file extension that ends in either \f[I]proj\f[R] or \f[I]sln\f[R] and uses that file.
The project or solution or C# (file-based app) file to operate on.
If a file isn\[cq]t specified, MSBuild searches the current directory for a project or solution.
.IP \[bu] 2
\f[V]PROJECT\f[R] is the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file.
.IP \[bu] 2
\f[V]SOLUTION\f[R] is the path and filename of a solution file (\f[I].sln\f[R] or \f[I].slnx\f[R] extension), or the path to a directory that contains a solution file.
.IP \[bu] 2
\f[V]FILE\f[R] is an argument added in .NET 10.
The path and filename of a file-based app.
File-based apps are contained within a single file that is built and run without a corresponding project (\f[I].csproj\f[R]) file.
For more information, see Build file-based C# apps.
.SH OPTIONS
.IP \[bu] 2
\f[B]\f[VB]-a|--arch <ARCHITECTURE>\f[B]\f[R]
Expand Down Expand Up @@ -285,13 +289,13 @@ The URI of the NuGet package source to use during the restore operation.
\f[B]\f[VB]--tl:[auto|on|off]\f[B]\f[R]
.RS 2
.PP
Specifies whether the \f[I]terminal logger\f[R] should be used for the build output.
Specifies whether \f[I]Terminal Logger\f[R] should be used for the build output.
The default is \f[V]auto\f[R], which first verifies the environment before enabling terminal logging.
The environment check verifies that the terminal is capable of using modern output features and isn\[cq]t using a redirected standard output before enabling the new logger.
\f[V]on\f[R] skips the environment check and enables terminal logging.
\f[V]off\f[R] skips the environment check and uses the default console logger.
.PP
The terminal logger shows you the restore phase followed by the build phase.
Terminal Logger shows you the restore phase followed by the build phase.
During each phase, the currently building projects appear at the bottom of the terminal.
Each project that\[cq]s building outputs both the MSBuild target currently being built and the amount of time spent on that target.
You can search this information to learn more about the build.
Expand Down Expand Up @@ -348,6 +352,18 @@ dotnet build
.fi
.RE
.IP \[bu] 2
Build a file-based app:
.RS 2
.IP
.nf
\f[C]
dotnet build MyProject.cs
\f[R]
.fi
.PP
File-based app support was added in .NET SDK 10.0.100.
.RE
.IP \[bu] 2
Build a project and its dependencies using Release configuration:
.RS 2
.IP
Expand Down
Loading
Loading