.NET SDK バージョン不一致エラー(NETSDK1045)の解決方法
問題の概要
.NETプロジェクトのビルド時に以下のエラーが発生する場合があります:
NETSDK1045: 現在の .NET SDK は .NET 8.0.1 のターゲットをサポートしていません。.NET 8.0 以下をターゲットするか、.NET 8.0.1 をサポートする .NET SDK のバージョンを使用してください
このエラーは主に以下の状況で発生します:
- プロジェクトがインストール済みSDKよりも新しいバージョンをターゲットしている
- Visual Studioのバージョンがターゲットフレームワークに対応していない
- SDKのバージョン設定が不適切(
global.json
の問題)
主な解決策
1️⃣ Visual Studioのアップグレード(最も一般的な解決法)
対象: Visual StudioのバージョンがターゲットFrameworkに対応していない場合
::warning{icon="😨"} Visual Studio 2019を使用している場合
.NET 8.0はVS2022(17.8以降)でのみ完全サポートされます。誤って古いVSを起動していないか確認してください ::
- Visual Studioダウンロードページにアクセス
- 最新版のVisual Studio 2022(バージョン17.8以上) をインストール
- インストール時に「.NET 8 SDK」コンポーネントを選択
2️⃣ global.jsonの設定確認
対象: SDKバージョンがglobal.json
で固定されている場合
- ソリューションルートで
global.json
ファイルを探す - ファイル内容を確認(例):
{
"sdk": {
"version": "8.0.201", // インストール済みSDKバージョンに変更
"rollForward": "latestFeature",
"allowPrerelease": true
}
}
- インストール済みSDKバージョンを確認:
dotnet --list-sdks
version
値をインストール済みバージョンに一致させる
::tip{icon="💡"} rollForward
設定の推奨値latestFeature
:互換性のある最新のマイナーバージョンに自動更新 ::
3️⃣ .NET SDKの再インストール
対象: SDKが正しくインストールされていない場合
- .NET SDKダウンロードページにアクセス
- ターゲットバージョンのSDKを選択(例:.NET 8.0 SDK)
- インストーラーを実行
- インストール後に確認:
dotnet --info
補助的な解決策
開発環境設定の調整
Visual Studioにて:
- 設定 → 環境 → プレビュー機能
- 「インストールされている場合 .NET 8 SDK を使用する」 を有効化
::tip{icon="⚠️"} Mac環境では特にこの設定が必要なケースがあります(Visual Studio > 環境設定 > プレビュー機能) ::
プロジェクト設定の精査
プロジェクトファイル(.csproj) の確認:
<PropertyGroup>
<!-- 正しい形式 -->
<TargetFramework>net8.0-windows</TargetFramework>
<!-- 誤った形式 -->
<!-- <TargetFramework>net8.0.101-windows</TargetFramework> -->
</PropertyGroup>
::warning{icon="❗"} ターゲットフレームワーク指定は netX.Y
形式が正規表現。マイクロバージョン番号(例:8.0.101)は含めないでください ::
トラブルシューティングチェックリスト
- Visual Studioバージョン確認:ヘルプ > Microsoft Visual Studioのバージョン情報
- インストール済みSDKの確認:
dotnet --list-sdks
- プロジェクトクリーン:bash
dotnet clean rm -r bin/ obj/ # ビルドキャッシュ削除
- global.jsonの存在チェック:ソリューションルート及び親ディレクトリ
- 環境変数確認(特にMac/Linux):bash
echo $MSBuildSDKsPath # 設定不要な場合が多い
予防策とベストプラクティス
- 定期的な開発環境更新:
- Visual Studioはバージョン17.8以降を使用
- 3ヶ月に1回を目安にSDKアップデート
- バージョン指定の原則:
global.json
では固定バージョンよりrollForward
活用- プロジェクトでは
TargetFramework
にマイクロバージョンを含めない
- CI/CD環境対策:yaml
- name: Setup .NET SDK uses: actions/setup-dotnet@v3 with: dotnet-version: | 8.x # 常に最新の8系SDKを使用
新しい.NETバージョン導入時には、公式ドキュメント(.NET 互換性ガイド)で破壊的変更を確認してください。