如何移除 .NET 執行階段和 SDK

隨著時間過去,當您安裝 .NET 執行階段和 SDK 的更新版本時,可能會想要從機器中移除過時的 .NET 版本。 解除安裝舊版執行階段可能會變更為了執行共用架構應用程式而選擇的執行階段,如選取要使用的 .NET 版本一文所述。

我是否應該移除某個版本?

.NET 版本選擇行為以及不同更新之間的 .NET 執行階段相容性,可讓您放心移除舊版。 .NET 執行階段更新在主要版本範圍內 (例如 7.x 和 6.x) 是相容的。 此外,新版的 .NET SDK 通常能夠繼續以相容的方式,建置以舊版執行階段為目標的應用程式。

一般而言,您只需要最新的 SDK,以及您應用程式所需之執行階段的最新修補版本。 會想要保留舊版 SDK 或執行階段版本的情況,包括維護以 project.json 為基礎的應用程式。 除非您的應用程式有特定理由需要舊版 SDK 或執行階段,否則您可以安全地移除舊版。

判斷已安裝的項目

您可以使用 .NET CLI 的選項列出電腦上安裝的 SDK 和執行階段版本。 使用 dotnet --list-sdks 查看已安裝的 SDK 清單;使用 dotnet --list-runtimes 查看執行階段清單。 如需詳細資訊,請參閱如何檢查是否已安裝

解除安裝 .NET

.NET 使用 Windows [應用程式與功能] 對話方塊來移除 .NET 執行階段和 SDK 的版本。 下圖顯示 [應用程式與功能] 對話方塊。 您可以搜尋 core.net 來篩選並顯示已安裝的 .NET 版本。

新增/移除程式以移除 .NET

選取您想要從電腦移除的任意版本,然後按一下 [解除安裝]

解除安裝 .NET 的最佳方式是反向操作您用來安裝的動作。 細節會依您選擇的 Linux 發行版本和安裝方法而異。

預覽版採手動安裝,因此必須手動解除安裝。 如需詳細資訊,請參閱撰寫指令碼或手動一節。

重要

如果是 Red Hat 安裝,請參閱適用於 .NET 的 Red Hat 產品文件 (英文)。

如果是 .NET 安裝,您可以移除下列型別:

套件管理員

除非您從手動安裝的預覽版升級,否則不需要在升級時,先使用套件管理員來解除安裝 .NET SDK。 套件管理員 updaterefresh 命令會在成功安裝新版本之後,自動移除舊版本。 如果您安裝的是預覽版,請將其解除安裝。

如果您已使用套件管理員安裝 .NET,請使用相同的套件管理員來解除安裝 .NET SDK 或執行階段。 .NET 安裝支援最熱門的套件管理員。 請參閱發行版本的套件管理員文件,了解環境的準確語法:

  • apt-get(8) 適用於 Debian 型系統,包括 Ubuntu。
  • yum(8) 適用於 Fedora、CentOS、Oracle Linux 和 RHEL。
  • zypper(8) 適用於 openSUSE 和 SUSE Linux Enterprise System (SLES)。
  • dnf(8) 適用於 Fedora。

在絕大多數的情況下,移除套件的命令是 remove

大多數套件管理員的 .NET SDK 安裝封裝名稱為 dotnet-sdk,後面接著版本號碼。 只需要主要和次要版本號碼:例如,.NET SDK 8.0.200 版可以參考為套件 dotnet-sdk-8.0

針對只安裝執行階段而未安裝 SDK 的機器,.NET 執行階段的封裝名稱為 dotnet-runtime-<version>,整個執行階段堆疊的名稱為 aspnetcore-runtime-<version>

撰寫指令碼或手動

如果您已使用 dotnet-install 指令碼或藉由擷取 tarball 來安裝 .NET,則必須使用手動方法來移除 .NET。

當您手動安裝 .NET 時,通常會安裝到 /usr/share/dotnet//usr/lib/dotnet/$HOME/.dotnet 目錄。 SDK、執行階段和 .NET 主機會安裝在不同的子目錄中。 這些「元件」目錄包含每個 .NET 版本的目錄。 移除已設定版本的目錄,即會從系統中移除該版本的 .NET。 這些目錄可能會根據您的 Linux 發行版本而有所不同。

您可以使用三個命令來探索 .NET 的安裝位置:dotnet --list-sdks 適用於 SDK、dotnet --list-runtimes 適用於執行階段,而 dotnet --info 適用於全部。 這些命令不會列出 .NET 主機。 若要判斷已安裝哪些主應用程式,請檢查 /usr/share/dotnet/host/fxr/ 目錄。 下列清單代表 .NET 特定版本的目錄,其中 $version 變數代表 .NET 的版本:

  • SDK:

    /usr/share/dotnet/sdk/$version/

  • 執行階段

    執行階段以特定 .NET 產品執行階段為基礎,例如 Microsoft.AspNetCore.AllMicrosoft.NETCore.App (尤其是 .NET 執行階段)。 這些會安裝到 /usr/share/dotnet/shared/$product/$version 目錄,其中 $product 是產品執行階段。 例如,您可能會看到下列目錄:

    /usr/share/dotnet/shared/Microsoft.NETCore.App/$version/
    /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/
    /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
    
  • .NET 主機

    /usr/share/dotnet/host/fxr/$version/

使用 rm -rf 命令移除 .NET 的版本。 例如,若要移除 6.0.406 SDK,請執行下列命令:

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

重要

版本目錄可能與您要解除安裝的「版本」不符。 與單一 .NET 版本一起安裝的個別執行階段和 SDK 可能會有不同的版本。 例如,您可能已安裝 ASP.NET Core 8 執行階段,而其安裝了 8.0.2 ASP.NET Core 執行階段和 8.0.8 .NET 執行階段。 這些版本目錄各不相同。 如需詳細資訊,請參閱 .NET 版本設定方式概觀 (部分機器翻譯)。

當您手動安裝 .NET 時,通常會安裝到 /usr/local/share/dotnet/$HOME/.dotnet 目錄。 SDK、執行階段和 .NET 主機會安裝在不同的子目錄中。 這些「元件」目錄包含每個 .NET 版本的目錄。 移除已設定版本的目錄,即會從系統中移除該版本的 .NET。 這些目錄可能會根據您的 macOS 版本而有所不同。

您可以使用三個命令來探索 .NET 的安裝位置:dotnet --list-sdks 適用於 SDK、dotnet --list-runtimes 適用於執行階段,而 dotnet --info 適用於全部。 這些命令不會列出 .NET 主機。 若要判斷已安裝哪些主應用程式,請檢查 /usr/local/share/dotnet/host/fxr/ 目錄。 下列清單代表 .NET 特定版本的目錄,其中 $version 變數代表 .NET 的版本:

  • SDK:

    /usr/local/share/dotnet/sdk/$version/

  • 執行階段

    執行階段以特定 .NET 產品執行階段為基礎,例如 Microsoft.AspNetCore.AllMicrosoft.NETCore.App (尤其是 .NET 執行階段)。 這些會安裝到 /usr/local/share/dotnet/shared/$product/$version 目錄,其中 $product 是產品執行階段。 例如,您可能會看到下列目錄:

    /usr/local/share/dotnet/shared/Microsoft.NETCore.App/$version/dotnet --info
    /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/$version/
    /usr/local/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
    
  • .NET 主機

    /usr/local/share/dotnet/host/fxr/$version/

使用 rm -rf 命令移除 .NET 的版本。 例如,若要移除 6.0.406 SDK,請執行下列命令:

sudo rm -rf /usr/local/share/dotnet/sdk/6.0.406

重要

版本目錄可能與您要解除安裝的「版本」不符。 與單一 .NET 版本一起安裝的個別執行階段和 SDK 可能會有不同的版本。 例如,您可能已安裝 ASP.NET Core 8 執行階段,而其安裝了 8.0.2 ASP.NET Core 執行階段和 8.0.8 .NET 執行階段。 這些版本目錄各不相同。 如需詳細資訊,請參閱 .NET 版本設定方式概觀 (部分機器翻譯)。

重要

如果您使用 Arm 型 Mac (例如採用 M1 晶片的 Mac),請檢閱 Arm 型 Mac 中所述的目錄路徑。

.NET 解除安裝工具

.NET 解除安裝工具 (dotnet-core-uninstall) 可讓您移除系統中的 .NET SDK 和執行階段。 選項的集合可用來指定應解除安裝的版本。

注意

目前,.NET 卸載工具不支援 .NET 8+。 如需工具發行排程的詳細資訊,請參閱 GitHub - dotnet-uninstall-tool 藍圖

.NET SDK 版本的 Visual Studio 相依性

在 Visual Studio 2019 16.3 版之前,Visual Studio 安裝程式會針對 .NET Core 2.1 或 2.2 版呼叫獨立 SDK 安裝程式。 因此,SDK 版本會出現在 Windows [應用程式與功能] 對話方塊中。 將 Visual Studio 使用獨立安裝程式安裝的 .NET SDK 移除,可能會中斷 Visual Studio。 如果 Visual Studio 在您解除安裝 SDK 之後發生問題,請在該特定版本的 Visual Studio 上執行 [修復]。 下表顯示 .NET Core SDK 版本的部分 Visual Studio 相依性:

Visual Studio 版本 .NET Core SDK 版本
Visual Studio 2019 16.2 版 .NET Core SDK 2.2.4xx, 2.1.8xx
Visual Studio 2019 16.1 版 .NET Core SDK 2.2.3xx, 2.1.7xx
Visual Studio 2019 16.0 版 .NET Core SDK 2.2.2xx, 2.1.6xx
Visual Studio 2017 15.9 版 .NET Core SDK 2.2.1xx, 2.1.5xx
Visual Studio 2017 15.8 版 .NET Core SDK 2.1.4xx

從 Visual Studio 2019 16.3 版開始,Visual Studio 會負責自己的 .NET SDK。 因此,您不會再於 [應用程式與功能] 對話方塊中看到那些 SDK 版本。

移除 NuGet 後援目錄

在 .NET Core 3.0 SDK 之前,.NET Core SDK 安裝程式使用名為 NuGetFallbackFolder 的目錄來儲存 NuGet 封裝的快取。 此快取會在 dotnet restoredotnet build /t:Restore 等作業期間使用。 NuGetFallbackFolder 位於已安裝 .NET 的 sdk 資料夾下。 例如,其位置在 Windows 可能為 C:\Program Files\dotnet\sdk\NuGetFallbackFolder,在 macOS 可能為 /usr/local/share/dotnet/sdk/NuGetFallbackFolder

在下列情況下,建議您移除此目錄:

  • 您只使用 .NET Core 3.0 SDK 或 .NET 5 或更新版本進行開發。
  • 您正在使用 3.0 版之前的 .NET Core SDK 版本進行開發,但您可以在線上操作。

如果您想要移除 NuGet 後援目錄,可以將其刪除,但需要系統管理權限才能執行。

不建議刪除 dotnet 目錄。 這麼做會移除您先前安裝的任何全域工具。 此外,在 Windows 上:

  • 您將中斷 Visual Studio 2019 16.3 版和更新版本。 您可以執行 [修復] 以復原。
  • 如果 [應用程式與功能] 對話方塊中有 .NET Core SDK 項目,則它們會遭到遺棄。