NETSDK1045:目前的 .NET SDK 不支援「較新版本」作為目標。

本文適用於:✔️ .NET Core 2.1.100 SDK 與更新版本

建置工具找不到建置專案所需的 .NET SDK 版本時,會發生此錯誤。 這通常是 .NET SDK 安裝或設定問題所造成。 完整的錯誤訊息與下列範例類似:

NETSDK1045:目前的 .NET SDK 不支援「較新版本」作為目標。 鎖定「較舊版本」或更低版本,或使用支援「較新版本」的 .NET SDK 版本。

下列各節描述此錯誤的一些可能原因。 請檢查每個項目,並查看哪個適合您。 請記住,對環境或設定檔進行變更時,您可能必須重新啟動命令視窗、重新啟動 Visual Studio,或重新開機,變更才會生效。

NET SDK 版本

開啟專案檔 (.csproj、.vbproj 或 .fsproj),然後檢查目標架構。 這是您應用程式嘗試使用的架構版本。

<TargetFramework>netcoreapp3.0</TargetFramework>

請確定機器上已安裝列出的 .NET 版本。 您可以使用下列命令來列出已安裝的版本 (開啟 [開發人員命令提示字元],然後執行此命令):

dotnet --list-sdks

x86 或 x64 結構

每個 .NET SDK 版本都可以用於 x86 和 x64 結構。 專案可能會嘗試尋找錯誤結構的 .NET SDK,或可能未安裝您專案所需結構的 .NET SDK。 檢查您所需結構的安裝資料夾。 例如,在 Windows 上,.NET SDK 的 x86 版本安裝在 C:\Program Files (x86)\dotnet 中,x64 版本則安裝在 C:\Program Files\dotnet 中。 請參閱如何檢查是否已安裝 .NET,然後選擇您的作業系統,以了解如何偵測機器上所安裝的項目。

如果未安裝您所需的版本,則請在 .NET 下載頁面尋找您所需的版本。

Visual Studio 版本

.NET SDK 可能已安裝 Visual Studio 2022,因此升級至較新版本的 Visual Studio 可能會安裝較新的 .NET SDK 並解決此錯誤。 如需詳細資訊,請參閱更新 Visual Studio

未啟用預覽

如果您已安裝所要求 .NET SDK 版本的預覽,則也需要設定選項,以在 Visual Studio 中啟用預覽。 移至 [工具]> [選項]> [環境]> [預覽功能],並確定已核取 [使用 .NET Core SDK 的預覽]

Visual Studio 版本

例如,.NET Core 3.0 和更新版本需要 Visual Studio 2019。 升級至 Visual Studio 2019 16.3 版或更新版本以建置專案。

Visual Studio for Mac

VS for Mac 支援 Mono 上的 dotnet msbuild 和 MSBuild。 但在 Mono 上使用 MSBuild 時,會降級 .NET SDK 版本,而這可能會導致 NETSDK1045 錯誤。

開啟 [方案屬性] 視窗 (在 [方案] 視窗中按住 Ctrl 並按一下方案,然後選取 [屬性]),並選取 [建置 - 一般],然後取消核取 [在 Mono 上使用 MSBuild 建置]。 如果方案中有任何傳統專案,則將會檢查此 [在 Mono 上使用 MSBuild 建置] 選項,而且這可能會造成問題,因為 Mono 不支援稍後的 .NET SDK。

如需哪些 Visual Studio for Mac 2022 版本支援哪些 .NET 版本的詳細資訊,請參閱支援的 .NET 版本

PATH 環境變數

建置工具會使用 PATH 環境變數來尋找正確的 .NET 建置工具版本。 如果 PATH 環境變數包含舊版建置工具的直接路徑,則可能會顯示此錯誤訊息。 請確定 PATH 環境變數中 .NET 工具的唯一路徑是最上層 dotnet 資料夾,例如,C:\Program Files\dotnet。 不正確的 PATH 範例將會類似 C:\Program Files\dotnet\2.1.0\sdks

MSBuildSDKPath 環境變數

檢查 MSBuildSDKPath 環境變數。 MSBuild 會辨識此選用環境變數,而且,如果設定,則會覆寫預設值。 這可能會設定為特定較舊 .NET SDK 版本。 如果已設定,則請嘗試將其刪除,然後重建您的專案。

global.json 檔案

檢查專案根資料夾中的 global.json 檔案,並從目錄鏈結往上檢查到磁碟區的根目錄,因為此檔案可以在資料夾結構中的任何位置。 如果其包含 SDK 版本,則請刪除 sdk 節點和其所有子系,或將其更新為所需的較新 .NET 版本。

{
  "sdk": {
    "version": "2.1.0"
  }
}

不需要 global.json 檔案,因此,如果其未包含 sdk 節點以外的任何項目,則您可以刪除整個檔案。

Directory.build.props 檔案

Directory.build.props 檔案是可設定全域屬性的選用 MSBuild 檔案。 檢查方案資料夾中的這些檔案,並從目錄鏈結往上檢查到磁碟區的根目錄,因為這些檔案可以在資料夾結構中的任何位置。 尋找 TargetFramework 元素,或可覆寫您所需設定的 MSBuildSDKPath 設定。

另請參閱