Podczas aktualizacji Visual Studio, jego instalator instaluje również nowe wersje .NET Core SDK - każda zajmuje ok. 500 MB.

Po pewnym czasie może się nazbierać trochę niepotrzebnych paczek. W moim przypadku było to ponad 10, czyli na szybko licząc ok. 5 GB zbędnych rzeczy.

Pierwszy raz o tym problemie dowiedziałem się ze wpisu .NET Core – oczyszczanie komputera na blogu u Weroniki Mularczyk.

Wtedy tych niepotrzebnych paczek miałem kilka i wszystkie usunąłem ręcznie. Ostatnio tych paczek uzbierało mi się trochę więcej, więc postanowiłem poszukać rozwiązania jak to szybko usunąć.

Znalazłem specjalne narzędzie stworzone do tego. W tym wpisie pokażę to narzędzie.

dotnet-core-uninstall

To narzędzie to dotnet-core-uninstall. Dostępne jest tutaj https://github.com/dotnet/cli-lab/releases. W tym momencie działa tylko na Windowsie i MacOX.

Instalacja

Ja pracuję na Windowsie. W tym przypadku trzeba ściągnąć instalator, plik z rozszerzeniem msi. Następnie go uruchomiamy i instalujemy narzędzie.

Już możemy z niego korzystać wpisując w linii poleceń dotnet-core-uninstall.

Usuwanie starych wersji .NET Core SDK

Aby zobaczyć listę zainstalowanych SDK wpisujemy polecenie:

dotnet-core-uninstall list

Widać co mamy zainstalowane:

.NET Core SDKs:
  3.1.100  x64    [Used by Visual Studio. Specify individually or use --force to remove]
  2.2.101  x64    [Used by Visual Studio 2017. Specify individually or use --force to remove]
  2.1.519  x64    [Used by Visual Studio 2017. Specify individually or use --force to remove]
  2.1.518  x64

Akurat na tym komputerze mam zainstalowane tylko SDK, żadnego Runtime czy Hosting Bundle. Tych wersji tutaj było więcej, chyba ponad 15 więcej, ale przed napisaniem tego posta uruchamiałem to narzędzie i skasowałem większość niepotrzebnych rzeczy. Zostało do usunięcia jeszcze wersja 2.1.518.

Po uruchomieniu narzędzia polecenim dotnet-core-uninstall jest napisane, że aby usunąć konkretną wersję trzeba użyć polecenia remove z podaniem konkretnego numeru wersji.

remove <VERSION>             Remove the specified .NET Core SDKs or Runtimes.

W obecnej sytuacji mam tylko jedną wersję do usunięcia, więc jedno polecenie i po sprawie. Wcześniej miałem tych wersji więcej do usuwania, więc słabo widziało mi się wpisywanie tego wszystkiego ręcznie.

Na szczęście można usuwać rzeczy hurtem 😃. Wpisujemy polecenie:

dotnet-core-uninstall remove -h

Dostajemy listę opcji jakie możemy użyć przy usuwaniu:

Options:
  --all                          Remove all .NET Core SDKs or Runtimes. (*)
  --all-below <VERSION>          Remove .NET Core SDKs or Runtimes below the specified version. The specified version will remain. (*)
  --all-but <VERSIONS>           Remove .NET Core SDKs or Runtimes, except those specified. (*)
  --all-but-latest               Remove .NET Core SDKs or Runtimes, except the one highest version. (*)
  --all-lower-patches            Remove .NET Core SDKs or Runtimes superseded by higher patches. Protects global.json. (*)
  --all-previews                 Remove .NET Core SDKs or Runtimes marked as previews. (*)
  --all-previews-but-latest      Remove .NET Core SDKs or Runtimes marked as previews, except the one highest preview. (*)
  --aspnet-runtime               Remove ASP.NET Core Runtimes only.
  --force                        Force removal of versions that might be used by Visual Studio.
  --hosting-bundle               Remove .NET Core Runtime & Hosting Bundles only.
  --major-minor <MAJOR_MINOR>    Remove .NET Core SDKs or Runtimes that match the specified `major.minor` version.
  --runtime                      Remove .NET Core Runtimes only.
  --sdk                          Remove .NET Core SDKs only.
  -v, --verbosity <LEVEL>        Set the verbosity level. Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].
  --x64                          Can be used with --sdk, --runtime and --aspnet-runtime to remove x64.
  --x86                          Can be used with --sdk, --runtime and --aspnet-runtime to remove x86.
  -y, --yes                      Execute the command without requiring y/n confirmation.

Trochę tego jest 😃. Mnie zainteresowała ta opcja:

--all-below <VERSION>

Bo chcę usunąć wszystkie wersje niższe niż 2.1.519

Suchy bieg, czyli dry-run

Przed usunięciem można użyć opcji dry-run i sprawdzić jakie paczki zostaną usunięte.

Dobrze jest uruchomić z tą opcją, aby przypadkiem nie usunąć paczki, która jest używana.

dotnet-core-uninstall dry-run --sdk --all-below 2.1.519

Jeszcze zaznaczamy, że usuwany SDK: --sdk. Widzimy co zostanie usunięte:

*** DRY RUN OUTPUT
Specified versions:
  Microsoft .NET Core SDK 2.1.518 (x64)
*** END DRY RUN OUTPUT

To avoid breaking Visual Studio or other problems, read https://aka.ms/dotnet-core-uninstall.

Run as administrator and use the remove command to uninstall these items.

Faktyczne usuwanie

Jeśli wszystko się zgadza to uruchamiam polecenie:

dotnet-core-uninstall remove --sdk --all-below 2.1.519

Potwierdzamy, że chcemy kontynuować i po chwili wszystko jest usunięte.

The following items will be removed:
  Microsoft .NET Core SDK 2.1.518 (x64)

To avoid breaking Visual Studio or other problems, read https://aka.ms/dotnet-core-uninstall.

Do you want to continue? [y/n] y
Uninstalling: Microsoft .NET Core SDK 2.1.518 (x64).

Podsumowanie

W ten prosty sposób można skasować nie używane SDK i inne rzeczy oraz odzyskać sporo miejsca na dysku.

W obecnych czasach, gdzie mamy dyski o dużej pojemności te kilka GB nie robi różnicy. Ale jak ktoś ma laptopa i dysk SSD 128 GB (ja tak miałem 😃), to te kilka giga się przyda.

Źródła: