Azure Pipelines:「NETSDK1045: The current .NET SDK does not support targeting .NET 10.0」
.NET SDK がビルドできるのは、自分の .NET のバージョンとそれより古いバージョンだけで、新しいバージョンはビルドできません。NETSDK1045 は、このビルドを動かした SDK が、プロジェクト ファイルの TargetFramework より古いという意味です。たとえば net10.0 のプロジェクトを SDK 9 でビルドしたときに出ます。パイプラインのエージェントには SDK がいくつも並んで入っていることが多いので、問題はビルドが実際にどの SDK を使ったか、そしてなぜかです。
失敗しているビルドがプルリクエストのビルド検証なら、プルリクエストはそれを待っています:JetBrains IDE のプラグイン Azure DevOps Pull Requests は、プルリクエストのブランチ ポリシーを状態つきで Rider や IntelliJ IDEA に並べ、Pro なら直しを push したあとに、失敗したビルド ポリシーをもう一度動かせます。JetBrains Marketplace で入れる
出るメッセージ
error NETSDK1045: The current .NET SDK does not support targeting .NET 10.0. Either target .NET 9.0 or lower, or use a version of the .NET SDK that supports .NET 10.0. Download the .NET SDK from https://aka.ms/dotnet/download(いまの .NET SDK は .NET 10.0 をターゲットにできない、.NET 9.0 以下をターゲットにするか、.NET 10.0 に対応した SDK を使って、という意味)。初めのバージョンがプロジェクトのターゲット、あとのバージョンがこの SDK でビルドできるいちばん新しいバージョンです。- そのステップがどの SDK を使ったかは、ビルドの直前のスクリプトのステップに
dotnet --versionとdotnet --list-sdksを置くと分かります。前者は、そのフォルダーの global.json があればそれが選ぶ SDK を出します。
ホストのイメージにある SDK
- 2026年11月1日の
ubuntu-24.04・windows-2022・windows-2025のイメージには .NET SDK 8・9・10 が入っていて、いちばん新しいのは 10.0.403 です(runner-images のリポジトリの readme)。global.json がなければ、dotnetは入っている中でいちばん新しい SDK を使うので、net10.0はそのままビルドできます。 - .NET 11 はイメージにありません。Microsoft のリリースの一覧では、いまはリリース候補です。イメージに入る前に
net11.0をターゲットにするなら、UseDotNet@2とincludePreviewVersions: trueで入れます。 - 同じ一覧では、.NET 8 と .NET 9 のサポートはどちらも2026年11月10日に終わります。そのため、いま多くのプロジェクトが
net10.0に移り、古い SDK 向けに組んだパイプラインでこのエラーに当たります。
パイプラインでよくある原因
- プロジェクトが .NET 8 だったころから残っている、古い
version(8.xなど)のUseDotNet@2のステップ。このタスクは$(Agent.ToolsDirectory)/dotnetに入れてそのフォルダーを PATH の先頭に置くので、そのあとのステップはイメージの新しい SDK ではなく、その SDK を使います。バージョンをプロジェクトに合わせる(10.x)か、ステップを外します。ターゲットがいくつもあるソリューションでも SDK はひとつで足ります。いちばん新しい SDK が古いターゲットもすべてビルドします。 sdk.versionが古い global.json。バージョンがあって、新しいメジャーを許すrollForwardがないと、新しい SDK が入っていてもdotnetはその SDK の系列にとどまります。バージョンを上げるか、新しい SDK ならどれでもよいならrollForwardをlatestMajorにします。useGlobalJson: trueのUseDotNet@2は、global.json が求める SDK を、そのrollForwardに沿って入れます。- Visual Studio の MSBuild でのビルド(
VSBuild@1やMSBuild@1)。SDK と Visual Studio のバージョンについての Microsoft の表では、net10.0をターゲットにできるのは Visual Studio 18.0 以降です。ホストの Windows のイメージにあるのは Visual Studio 2022 の 17.14 です。同じページは、できるならmsbuildよりdotnet buildを勧めているので、SDK 形式のプロジェクトはDotNetCoreCLI@2かdotnet buildのスクリプトでビルドします。 - だれかが手で入れた SDK しかないセルフホストのエージェント。マシンに SDK を足すか、
UseDotNet@2にエージェントのツールのフォルダーへダウンロードさせます。
- task: UseDotNet@2
inputs:
packageType: sdk
version: '10.x'
- script: dotnet --version
- task: DotNetCoreCLI@2
inputs:
command: build
projects: '**/*.csproj'
Rider と IntelliJ IDEA で Azure DevOps のプルリクエスト
Azure DevOps Pull Requests は、JetBrains IDE 2024.1 以降と Android Studio で動く Lesstep のプラグインです。git のリモートから組織・プロジェクト・リポジトリを読み、あなたのレビュー待ちのプルリクエストを IDE のツール ウィンドウに並べます。Azure DevOps Services でも Azure DevOps Server でも動きます。プルリクエストのブランチ ポリシーを状態つきで見せるので、通っていない必須のビルドがプルリクエストの隣に出ます。Pro なら、失敗したビルド ポリシーや期限の切れたビルド ポリシーをそこからもう一度動かせます。レビューの受信箱は無料、投票・コメント・完了・作成は Pro(30日の無料試用つき)。
Azure DevOps・Azure Pipelines・.NET・Visual Studio は Microsoft Corporation の商標、Rider と IntelliJ IDEA は JetBrains s.r.o. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。
ほかに:Dotnet command failed with non-zero exit code · MSB3644:参照アセンブリが見つからない · Rider で Azure DevOps Server のプルリク · English