Hi all,
We’ve released SonarScanner for .NET 12.0. This is a major version with breaking changes: some setups that worked with 11.x stop working with 12.0. Please read this post before upgrading, especially if you use an older SonarQube Server, XAML builds, or the sonar.scanner.useSonarScannerCLI option.
If you install the scanner with dotnet tool install dotnet-sonarscanner without a version, your pipelines pick up 12.0 automatically.
What changes
1. SonarQube Server 2025.1 LTA or later is required
SonarScanner for .NET 12 works with SonarQube Server 2025.1 LTA and later, and SonarQube Community Build 25.1 and later. On older versions, the analysis fails with one of these messages:
-
SonarQube versions below 2025.1 are not supported anymore by the SonarScanner for .NET. -
On SonarQube Server older than 10.6:
Downloading from https://\<host>/api/v2/analysis/version failed. Http status code is NotFound.
On SonarQube Server 2025.1 to 2025.3 and Community Build 25.x, the analysis still works but shows this warning: You're using an unsupported version of SonarQube. The next major version release of SonarScanner for .NET will not work with this version.
What to do: upgrade to SonarQube Server 2025.1 LTA or later. We recommend the latest LTA, 2026.5.
2. XAML builds are no longer supported
SonarScanner for .NET 12 fails in XAML builds, a legacy build system Microsoft deprecated years ago, on any Team Foundation Server or Azure DevOps Server version. YAML and classic pipelines aren’t affected.
What to do: move your XAML builds to YAML or classic pipelines.
3. The SonarScanner CLI fallback is removed
Since version 10.4, the scanner downloads the scanner engine directly from SonarQube instead of going through the SonarScanner CLI. Up to 11.x, the scanner could fall back to the SonarScanner CLI, either when you set /d:sonar.scanner.useSonarScannerCLI=true or automatically when the scanner engine download failed (for example, blocked by a proxy or firewall). In 12.0, both fallbacks are gone. useSonarScannerCLI is ignored, and a failed download fails the analysis with: Scanner Engine could not be downloaded. Turn on verbose logging to see more details.
What to do: check the end step of your 11.x logs.
-
The scanner engine has finished successfully: you’re not affected. -
Calling the SonarScanner CLI...: make sure your build agents can reach:-
SonarQube Server and Community Build:
<your SonarQube URL>/api/v2/analysis/\*.Check that any proxy, WAF, or reverse proxy allows these paths and large file downloads. -
SonarQube Cloud:
api.sonarcloud.io and scanner.sonarcloud.io. For the US region, \*.sonarqube.us and \*.sonarcloud.us.
-
If you can’t upgrade yet
Pin the scanner to 11.3, the last 11.x version. This is a temporary workaround: 11.x won’t receive further fixes, including security fixes.
-
.NET global tool:
dotnet tool install --global dotnet-sonarscanner --version 11.3.\* -
.NET Framework and .NET Core zips: download 11.3 from the releases page.
-
Azure DevOps extension: 12.0 ships in new major versions (SonarQube Server extension 9.0, SonarQube Cloud extension 5.0), in early November. Your pipelines stay on 11.x until you move to the new task version.
SonarQube Cloud users
Section 1 doesn’t apply. Sections 2 and 3 apply as they do for SonarQube Server: if your pipelines use XAML builds or rely on the SonarScanner CLI fallback, update them before upgrading to SonarScanner for .NET 12.
Learn more
If you hit any issue with the upgrade, open a new thread in the community with your scanner logs.