Skip to content

.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を起動していないか確認してください ::

  1. Visual Studioダウンロードページにアクセス
  2. 最新版のVisual Studio 2022(バージョン17.8以上) をインストール
  3. インストール時に「.NET 8 SDK」コンポーネントを選択

2️⃣ global.jsonの設定確認

対象: SDKバージョンがglobal.jsonで固定されている場合

  1. ソリューションルートでglobal.jsonファイルを探す
  2. ファイル内容を確認(例):
json
{
  "sdk": {
    "version": "8.0.201", // インストール済みSDKバージョンに変更
    "rollForward": "latestFeature",
    "allowPrerelease": true
  }
}
  1. インストール済みSDKバージョンを確認:
bash
dotnet --list-sdks
  1. version値をインストール済みバージョンに一致させる

::tip{icon="💡"} rollForward設定の推奨値
latestFeature:互換性のある最新のマイナーバージョンに自動更新 ::

3️⃣ .NET SDKの再インストール

対象: SDKが正しくインストールされていない場合

  1. .NET SDKダウンロードページにアクセス
  2. ターゲットバージョンのSDKを選択(例:.NET 8.0 SDK)
  3. インストーラーを実行
  4. インストール後に確認:
bash
dotnet --info

補助的な解決策

開発環境設定の調整

Visual Studioにて

  1. 設定 → 環境 → プレビュー機能
  2. 「インストールされている場合 .NET 8 SDK を使用する」 を有効化

::tip{icon="⚠️"} Mac環境では特にこの設定が必要なケースがあります(Visual Studio > 環境設定 > プレビュー機能) ::

プロジェクト設定の精査

プロジェクトファイル(.csproj) の確認

xml
<PropertyGroup>
  <!-- 正しい形式 -->
  <TargetFramework>net8.0-windows</TargetFramework>
  
  <!-- 誤った形式 -->
  <!-- <TargetFramework>net8.0.101-windows</TargetFramework> -->
</PropertyGroup>

::warning{icon="❗"} ターゲットフレームワーク指定は netX.Y 形式が正規表現。マイクロバージョン番号(例:8.0.101)は含めないでください ::

トラブルシューティングチェックリスト

  1. Visual Studioバージョン確認:ヘルプ > Microsoft Visual Studioのバージョン情報
  2. インストール済みSDKの確認dotnet --list-sdks
  3. プロジェクトクリーン
    bash
    dotnet clean
    rm -r bin/ obj/ # ビルドキャッシュ削除
  4. global.jsonの存在チェック:ソリューションルート及び親ディレクトリ
  5. 環境変数確認(特に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 互換性ガイド)で破壊的変更を確認してください。