Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 14 Min.

Frühjahrsputz für .NET

Immer mehr .NET-Versionen sammeln sich auf der Festplatte an. Höchste Zeit, wieder Platz zu schaffen.
© dotnetpro
Und noch eine neue Version und noch eine: Microsoft hat in der Vergangenheit zahlreiche Varianten und Versionen von Software Development Kits (SDKs), Frameworks, Komponenten und dergleichen veröffentlicht. Hier stellt sich die Frage, wie wir alte .NET-Versionen, Framework-Versionen und SDKs aufräumen, um unser System auf dem neuesten Stand zu halten und eine optimale Leistung zu gewährleisten. Von Unmengen an Speicherplatz, der auf diese Weise verschwendet wird, ganz zu schweigen.Dieser Artikel befasst sich mit dem Aufräumen alter .NET-Versionen, Framework-Versionen und SDKs und zeigt auch praktische Anleitungen und Tipps zur Durchführung dieser Putzaktionen. Erfreulicherweise gibt es eine Handvoll nützlicher Tools, um uns beim Löschen nicht mehr benötigter Softwarepakete zu unterstützen. Bringen wir .NET wieder in Bestform.

Die verschiedenen .NET-Versionen

Das .NET Framework ist eine proprietäre Softwareplattform, die hauptsächlich auf Microsoft Windows ausgeführt wird. Es umfasst eine große Klassenbibliothek namens Framework Class Library (FCL) und bietet diese über mehrere Programmiersprachen hinweg an. Programme, die für das .NET Framework geschrieben wurden, werden in einer Softwareumgebung namens Common Language Runtime (CLR) ausgeführt. Das .NET Framework ist im Lauf der Jahre in mehreren Versionen erschienen – von 1.0 bis 4.8..NET Core ist eine kostenlose, quelloffene, allgemeine Entwicklungsplattform für die Entwicklung von Softwareanwendungen auf Windows-, Linux- und macOS-Betriebssystemen. Sie wurde entwickelt, um .NET schnell, skalierbar und modern zu gestalten [1]. .NET Core wurde als Open Source unter der MIT-Lizenz veröffentlicht und bietet Funktionen wie plattformübergreifende Unterstützung sowie hohe Leistung..NET 5, .NET 6 und .NET 7 sind die neuesten Versionen der .NET-Technologie und repräsentieren den Übergang von .NET Framework und .NET Core zu einer einheitlichen Plattform. .NET 5 und .NET 6 bieten verbesserte Leistung, eine bessere Unterstützung für Container und Mikrodienste sowie eine einfachere Migration von älteren .NET-Framework-Anwendungen. Die Hauptunterschiede zwischen .NET 5 und .NET 6 liegen in Verbesserungen der Leistung, Einfachheit und Geschwindigkeit beim Erstellen von Code. Bei .NET 7 sind ebenfalls zahlreiche Verbesserungen hinzugekommen, ­etwa eine verbesserte OpenAPI-Unterstützung, die Verbesserung von regu­lären Ausdrücken und ein On-Stack-Replace­ment, um nur drei Features zu nennen. Zudem bietet .NET 7 als STS-Version (Standard Term Support) lediglich 18 Monate Support, während es bei .NET 6 als LTS-Version (Long Term Support) ganze drei Jahre waren. So ist es nicht verwunderlich, dass bereits Version 8 von .NET auf dem Plan steht.Die verschiedenen .NET-Versionen haben unterschiedliche Abhängigkeiten und Kompatibilitätsanforderungen. Beispielsweise sind die .NET-Framework-Versionen 2.0, 3.0 und 3.5 mit der gleichen Version der CLR (CLR 2.0) erstellt. Die Kompatibilität zwischen verschiedenen .NET-Versionen hängt von den jeweiligen Anforderungen und Funktionen ab.

Notwendigkeit der Aufräumarbeiten

Jede .NET-Version hat ihre eigene Lebensdauer, und Micro­soft stellt einen klar definierten Support-Zeitplan für jede Version bereit. Ältere Versionen, die das Ende ihres Lebenszyklus erreicht haben, erhalten keine weiteren Updates oder Sicherheitspatches, was ein weiterer wichtiger Grund dafür ist, alte .NET-Versionen aufzuräumen und zu aktualisieren. Zudem ist es wichtig zu verstehen, dass nicht jede Version von .NET durch eine neuere Version ersetzt wird. In vielen Fällen können mehrere Versionen von .NET parallel auf dem gleichen System existieren, und unterschiedliche Anwendungen können verschiedene Versionen erfordern.Daher ist es entscheidend, beim Aufräumen und Aktualisieren von .NET-Versionen mit Bedacht vorzugehen und sicherzustellen, dass man die Anforderungen der vorhandenen Anwendungen vollständig versteht. Gleichzeitig bedeutet diese parallele Installation von Framework-Paketen, dass es praktisch immer Versionen auf dem System gibt, die nicht mehr benötigt werden und entfernt werden können.Manchmal kann die gleichzeitige Installation mehrerer .NET-Versionen oder Frameworks zu Konflikten führen. Diese können auftreten, wenn verschiedene Versionen unterschiedliche Abhängigkeiten oder Anforderungen haben. Solche Konflikte können die Funktionalität der Anwendungen beeinträchtigen und sind oft schwierig zu diagnostizieren und zu beheben. Durch das Aufräumen alter Versionen können wir das Risiko solcher Konflikte minimieren.Schließlich stellen veraltete .NET-Versionen und Komponenten potenzielle Sicherheitsrisiken dar. Sobald eine Version das Ende ihrer Lebensdauer erreicht hat, stellt Microsoft in der Regel keine weiteren Sicherheitsupdates oder Patches mehr zur Verfügung.Dies bedeutet, dass bekannte Sicherheitslücken oder Schwachstellen in diesen Versionen nicht behoben werden. Wenn diese Versionen weiterhin auf einem System installiert sind, könnten sie daher Einfallstore für Sicherheitsverletzungen sein. Durch das Entfernen dieser veralteten Versionen können wir diese Sicherheitsrisiken beseitigen und dazu beitragen, unser System sicherer zu machen.

Identifizierung alter Versionen

In der Regel ist es sinnvoll, vor dem Versuch der Deinstalla­tion von alten Versionen zu überprüfen, was überhaupt auf einem System installiert ist. Um die verschiedenen .NET-Versionen, .NET Core, SDKs und sonstigen Versionen von .NET auf einem System zu identifizieren, können wir unterschiedliche Methoden nutzen.Die Windows-Registry enthält Informationen über die in­stallierten .NET-Framework-Versionen. Um herauszufinden, welche Versionen installiert sind, öffnen wir den Registrierungseditor (regedit.exe) und navigieren zum folgenden Schlüssel:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
  NET Framework Setup\NDP 
Die installierten .NET-Framework-Versionen werden unter diesem Schlüssel aufgelistet. Um die installierten .NET-Core-SDK-Versionen zu ermitteln, lässt sich die Eingabeaufforderung oder ein Terminal nutzen. Darin führen wir den folgenden Befehl aus:

> dotnet --list-sdks
7.0.109 [C:\Program Files\dotnet\sdk] 
Dieses Kommando zeigt eine Liste der installierten Versionen des .NET Core SDK an. Um die installierten Runtime-Ver­sionen von .NET Core zu ermitteln, ist der folgende Befehl nützlich:

> dotnet --list-runtimes
Microsoft.AspNetCore.App 7.0.9 [C:\Program Files\dotnet\
  shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.20 [C:\Program Files\dotnet\
  shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.9 [C:\Program Files\dotnet\
  shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.20 [C:\Program Files\
  dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.9 [C:\Program Files\
  dotnet\shared\Microsoft.WindowsDesktop.App] 
Wir können auch den Windows-Datei-Explorer verwenden, um die installierten .NET-Framework-Versio­nen zu ermitteln. Im Verzeichnis
C:\Windows\Microsoft.NET\Framework befinden sich die verschiedenen Versionen des .NET Frameworks, wie zum Beispiel v4.0.30319 für .NET Framework 4.0. Über die Dateieigenschaften der DLL-Dateien in diesen Ordnern lässt sich die genaue Produktversion ermitteln.Zudem ist die PowerShell oder die Befehlszeile nützlich, um Informa­tionen über die installierten .NET-Framework-Versionen zu erhalten. Wir können den folgenden Power­Shell-Befehl ausführen, um die installierten .NET-Framework-Versionen 4.5 oder höher zu ermitteln:

> Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework 
  Setup\NDP\v4\Full' -ErrorAction SilentlyContinue | 
  Get-ItemPropertyValue -Name Release | ForEach-Object 
  { $_ -ge 378389 } 
Dieser Befehl gibt True zurück, wenn .NET Framework 4.5 oder höher installiert ist, und andernfalls False.Daneben ist die Übersicht der installierten Softwarepakete von Windows interessant, um einen sehr schnellen, aber teilweise groben Überblick über die verschiedenen Versionen zu erhalten. Es besteht allerdings die Möglichkeit, dass dort so viele Versionen angezeigt werden, dass der Überblick erst recht verloren geht, da über die Zeit sehr viele Installationen auf dem System gelandet sind. Dann ist es schwer ersichtlich, wie diese komfortabel und einfach zu löschen sind.Des Weiteren lohnt sich ein Blick in den Installer von Vi­sual Studio, wenn es sich um ein Entwicklersystem handelt. Etliche Installationen der verschiedenen .NET-Versionen und -Komponenten werden mit Visual Studio installiert und lassen sich darüber wieder deinstallieren. Das betrifft insbesondere zusätzliche Komponenten wie zum Beispiel ASP.NET, Datenbanken und weitere Tools.

Tools für die Löschvorgänge

Es gibt verschiedene Tools, sowohl von Microsoft als auch von Drittanbietern, die helfen, .NET-Versionen, SDKs und ähnliche Komponenten von einem System zu entfernen..NET Uninstall Tool: Das .NET Uninstall Tool mit Namen dotnet-core-uninstall [2] von Microsoft ermöglicht das Entfernen von .NET SDKs und Runtimes von einem System [3]. Es bietet verschiedene Optionen, um anzugeben, welche Versionen deinstalliert werden sollen. Das Tool unterstützt Windows und macOS, jedoch nicht Linux. Das Tool kommt im praktischen Teil dieses Artikels umfangreich zum Einsatz.Dotnetfx Cleanup: Dotnetfx Cleanup ist ein kostenloses Tool des Microsoft-Entwicklers Aaron Stebner, das .NET-Framework-Installationen ab Version 1.0 entfernt [4]. Das Tool kann alle .NET-Framework-Versionen oder nur bestimmte Versionen deinstallieren. Zu beachten ist jedoch, dass das Tool auch Dateien löscht, die von allen .NET Frameworks gemeinsam genutzt werden. Zudem scheint die Software nicht mehr aktiv gepflegt zu werden.Aaron Stebner,Windows-Apps & Features: Das Windows-Apps & Features-Dialogfeld ist ebenfalls nützlich, um Versionen der .NET-Runtime und des .NET SDK zu entfernen. Eine Suche nach core oder .net filtert die installierten Versionen von .NET und zeigt diese an. Anschließend können wir diese Versionen auswählen und löschen. Allerdings ist diese Vorgehensweise nur für eine kleine Anzahl von Systemen sinnvoll, da sie recht zeitaufwendig ist.Paketmanager: Wurde .NET über einen Paketmanager installiert, lässt sich dieser Paketmanager auch nutzen, um das .NET SDK oder die Runtime zu deinstallieren. .NET-Installationen unterstützen die meisten gängigen Paketmanager. Beispiele dafür sind apt-get für Debian-basierte Systeme, yum für Fedora, CentOS, Oracle Linux und RHEL oder zypper für openSUSE und SUSE Linux Enterprise System. Unter Windows gibt es etwa Chocolatey und andere Paketmanager, mit denen .NET-Versionen, SDKs und dergleichen installiert worden sind und wieder deinstalliert werden können.apt-getyumRHELzypperTotal Uninstaller [5]: Ein Open-Source-Windows-Software-Deinstallationsprogramm. Besonders nützlich, um Visual Studio zu beschleunigen, indem ein Teil des Ballasts entfernt wird. Erfordert Administratorrechte zur Ausführung. Der Quelltext steht auf GitHub zur Verfügung. Die Anwendung wurde mit der Windows Presentation Foundation (WPF), MahApps.Metro (UI Toolkit) und Costura.Fody als Dependency Injection Tool implementiert.Setup-Anwendungen: Nicht zu vergessen und zu unterschätzen sind die üblichen Setups und Installer, über die viele Anwendungen installiert werden, etwa für Visual Studio und andere Entwicklungsumgebungen. Diese installieren im Zweifel ebenfalls viele Komponenten gleich mit, die sich im Nachgang über das gleiche Tool wieder entfernen lassen. Mit diesen Tools können wir .NET-Versionen, SDKs und ähnliche Komponenten von einem System entfernen und aufräumen. Zu beachten ist jedoch, dass das Entfernen von .NET-Versionen möglicherweise Auswirkungen auf die installierten Anwendungen und Projekte haben kann. Wir müssen daher sicherstellen, dass wir vor und nach dem Entfernen von Ver­sionen entsprechende Sicherungen und Tests durchführen.

Entfernen alter Versionen am praktischen Beispiel

Auf einem System sind die oben genannten Fälle aufgetreten. Der Speicherplatz auf der primären Partition wird knapp. Primär kam das Tool dotnet-core-uninstall zum Einsatz. Die nachfolgenden Beispiele sind mit dessen Version 1.6.0 entstanden, die Mitte Dezember 2022 veröffentlicht wurde [6]. Beim Schreiben dieses Artikels ist das weiterhin die aktuelle Version. Das Tool dotnet-core-unin­stall kann Versionen des .NET Core SDK, .NET-Core-Laufzeitumgebungen, ASP.NET-Core-Laufzeitumgebungen und Hosting-Bundles entfernen. Allerdings auch nur, wenn diese Versionen nicht über Visual Studio 2019 Update 3 oder später über Skripte/ZIP-Pakete installiert wurde oder wenn es sich um Laufzeitumgebungen handelt, die als Teil eines SDK mitinstalliert wurden. Daher war der erste Versuch, nicht mehr benötigte Komponenten über den In­staller von Visual Studio zu entfernen und Programme in Windows 10 zu löschen. Welchen Umfang das annehmen kann, zeigt Bild 1. Dort sind alle installierten Versionen zu sehen, zum Teil mit minimalen Versionsunterschieden.
Übersicht über installierte .NET-Versionen und Komponenten (Bild 1) © Autor
Über Windows und den Installer von Visual Studio (siehe Bild 2) wurden in einem ersten Durchgang zahlreiche alte Versionen gelöscht. Gerade über den Installer von Visual Studio funktioniert das schnell und unkompliziert.
Die Deinstallation von Komponenten über den Visual-Studio-Installer (Bild 2) © Autor
Anschließend kommt das Tool dotnet-core-uninstall zum Einsatz, das zunächst heruntergeladen und installiert werden muss. Das Werkzeug bietet die komfortable Option an, zunächst sogenannte Dry-Runs durchzuführen, um auf der Konsole auszugeben, was ein Löschvorgang für Auswirkungen hätte, wenn wir ihn ausführen würden. Ein solcher Dry-Run wird mit dem sehr passenden Kommando whatif eingeleitet und ausgeführt. Diese whatif-Option lässt sich pro Paket-Art ausführen, also für ASP.NET-Core-Laufzeitumgebungen, SDKs, Hosting-Bundles und dergleichen. Bild 3 zeigt dazu ein Beispiel. Dort ist das Resultat des Kommandos:whatif
Dry-Run für einen Löschvorgang von ASP.NET-Core-Laufzeitumgebungen (Bild 3) © Autor

dotnet-core-uninstall whatif --all --aspnet-runtime 
zu sehen. Der Dry-Run zeigt, welche Versionen vom Durchlauf betroffen sind. In der Regel ist es nicht erwünscht, wirklich alle Versionen einer Paket-Art zu entfernen, sondern immer nur die vorherigen Versionen unter Beibehaltung der ­aktuellen Version. Am Beispiel der Laufzeitumgebung von ASP.NET Core ist das in Bild 4 zu sehen. Der Screenshot ist auf Basis des folgenden Kommandos entstanden:
Ein Dry-Run und der Löschvorgang für ASP.NET-Laufzeitumgebungen (Bild 4) © Autor

dotnet-core-uninstall whatif --all-but-latest 
  --aspnet-runtime 
Das Tool listet anschließend die betroffenen Versionen auf, die wir mit dem nachfolgenden Kommando entfernen können:

dotnet-core-uninstall remove 
  --all-but-latest --aspnet-runtime 
Zur Sicherheit werden die Versionen noch einmal aufgelistet und eine Abfrage sorgt für Bestätigung, dass der Löschvorgang tatsächlich beabsichtigt ist. Anschließend läuft das Tool los und entfernt die erfassten Pakete. Wie viele Versionen und Pakete das zum Teil betrifft, zeigt das Bild 5. Die dort dargestellte Übersicht ist auf Basis des nachfolgenden Kommandos entstanden:
Dry-Run über .NET-SDKs (Bild 5) © Autor

dotnet-core-uninstall whatif 
  --all-but-latest --sdk 
Diese Versionen lassen sich nach dem gleichen Prinzip löschen. Nach dem Dry-Run ist ein Durchlauf mit remove notwendig, und schon löscht die Anwendung nicht mehr benötigte SDKs. Eine Übersicht aller installierten Pakete, SDKs, Laufzeitumgebungen und Co., die von der Anwendung erfasst werden, erzeugt das list-Kommando:list

dotnet-core-uninstall list 
Das Resultat dazu zeigt das Bild 6.
Exception beim Auflisten von installierten Framework- und SDK-Versionen (Bild 6) © Autor
Dieses Problem kann auftreten, wenn es zwei SDKs gibt, die identisch heißen. Im eingangs gezeigten Bild 1 betrifft das die ersten beiden Einträge:

Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2 - 
  Version 1.0.20624.39
Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2 - 
  Version 1.0.20811.48 
Die Versionen unterscheiden sich zwar, aber nur so geringfügig, dass das Uninstall-Tool beim Auflisten nicht damit zurechtgekommen ist. Die Fehlermeldung dazu lautet:

Unhandled exception: System.Reflection.TargetInvocation
  Exception: Exception has been thrown by the target of 
  an invocation.
---> System.ArgumentException: An item with the same 
  key has already been added. Key: 1.0.0 (x64) 
Daran ist zu erkennen, dass es sich aufgrund der Version um einen doppelten Schlüssel handelt. Nachdem eine dieser Versionen manuell deinstalliert wurde, da ohnehin beide überflüssig waren, funktioniert auch das Werkzeug von Microsoft problemlos und listete alle Pakete ordnungsgemäß auf.Das Resultat der abschließenden Reinigung ist in Bild 7 dargestellt. Da es das Ziel war, das System deutlich aufzuräumen, wurden bis auf die damalige Version von .NET 7 alle übrigen Versionen entfernt.
Auflistung der installierten Versionen nach dem Reinigungsdurchlauf (Bild 7) © Autor
Allerdings war das nur der insgesamt erste Schritt der Löschaktion. Das Tool Total Uninstaller konnte viele weitere Softwarepakete deinstallieren, die noch von alten Visual-Studio-Installationen vorhanden waren und auf dem System nicht mehr gebraucht werden. Das Bild 8 zeigt dazu einen Ausschnitt aus der nahezu unendlichen Liste an Anwendungen und Komponenten, die sich im Lauf von etlichen Jahren angesammelt haben.
Deinstallation zahlreicher Softwarepakete aus alten Visual-Studio-Installationen (Bild 8) © Autor
Das Löschen all dieser Pakete hat eine ganze Weile in Anspruch genommen. Das Tool dotnet-core-uninstall war insgesamt knapp 15 Minuten beschäftigt, um alle Pakete zu löschen. Das Tool Total Uninstaller hat anschließend noch einmal circa 40 Minuten gebraucht, um alles Weitere zu entfernen. Gelohnt hat sich die Aktion trotzdem. Auf der primären Partition waren nach dem Löschvorgang etwas mehr als 100 Gigabyte Speicherplatz frei, ohne eine Anwendung zu beeinträchtigen. In der heutigen Zeit immer größer werdender Festplatten und SSDs ist das zwar nicht mehr ganz so tragisch, ein unnötiger Speicherverbrauch ist es aber dennoch. Zudem waren nach der Löschaktion lediglich knapp 180 Anwendungen und installierte Softwarepakete vorhanden, von vormals über 530 Anwendungen und Pakete. Darüber hinaus hat das Löschen des NuGet-Fallback-Verzeichnisses [7] noch einmal knapp 2 Gigabyte Speicher von über 20 000 Dateien freigeräumt.Testen und Überprüfen der
Systemfunktionalität
Nachdem die Aufräumarbeiten abgeschlossen sind, ist es entscheidend, die Funktionsfähigkeit des Systems zu testen und zu überprüfen. Die Entfernung alter .NET-Versionen, Framework-Versionen und SDKs sollte in der Theorie keinen Einfluss auf die Funktionsfähigkeit einer aktuellen Anwendung haben, vorausgesetzt, diese wurden korrekt identifiziert und die Abhängigkeiten korrekt verwaltet. Dennoch ist eine gründliche Überprüfung notwendig, um sicherzustellen, dass alles wie erwartet funktioniert.Die Funktionsfähigkeit lässt sich im Zweifel nur mit einem ausgiebigen Systemtest der Software sicherstellen. Sind es ­eigene Anwendungen, lässt sich bei der Entwicklung prüfen, welche Framework-Versionen notwendig sind und welche nicht. Das erleichtert die Identifikation, welche Pakete deinstalliert werden können und welche nicht.Für Windows lässt sich gegebenenfalls eine Systemdateiüberprüfung mit dem Befehl

sfc /scannow 
durchführen, um etwaige Systemdateifehler zu identifizieren und zu beheben. Ein ähnlicher Test ist auch für die .NET-Umgebung möglich. Über das .NET Command Line Interface (CLI) lässt sich der folgende Befehl ausführen:

dotnet --info 
Dieser Befehl gibt Informationen über die installierten .NET-Versionen und SDKs aus und hilft dabei, sicherzustellen, dass die Aufräumarbeiten erfolgreich waren:

> dotnet --info

.NET SDK:
  Version: 7.0.109
  Commit: 3e9283a8e9

Laufzeitumgebung:
  OS Name: Windows
  OS Version: 10.0.19045
  OS Platform: Windows
  RID: win10-x64
  Base Path: C:\Program Files\
    dotnet\sdk\7.0.109\

Host:
  Version: 7.0.9
  Architecture: x64
  Commit: 8e9a17b221

.NET SDKs installed:
  7.0.109 [C:\Program Files\dotnet
  \sdk]

.NET runtimes installed:  
Microsoft.AspNetCore.App 7.0.9 
  [C:\Program Files\dotnet\shared\
    Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.20 [C:\Program Files\dotnet\
    shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.9 [C:\Program Files\dotnet\
    shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 6.0.20 [C:\Program Files\
    dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 7.0.9 [C:\Program Files\
    dotnet\shared\Microsoft.WindowsDesktop.App]
... 

Wiederherstellung und Fehlerbehebung

In der Regel ist das Aufräumen alter .NET-Versionen, Framework-Versionen und SDKs ein sicherer Prozess, da bekannt ist, welche Versionen noch genutzt werden und welche nicht. Dennoch können unerwartete Probleme auftreten, was insbesondere ältere Anwendungen und geteilte Komponenten betrifft. Daher kann es notwendig sein, ältere Versionen wiederherzustellen, wenn es Anwendungen gibt, die darauf aufbauen, und diese nicht ersetzt werden können.Um ein für eine Anwendung notwendiges Element wiederherzustellen, müssen die betroffene .NET-Version, das Framework oder das SDK erneut installiert werden. Microsoft stellt alle offiziellen Versionen von .NET und zugehörigen Frameworks und SDKs zum Download zur Verfügung. Bei älteren Versionen ist im Zweifel etwas mehr Sucharbeit notwendig, aber Microsoft bietet diese ebenfalls zum Download an. Nach der Installation sollten die betreffenden Anwendungen dann wieder funktionieren. Sollten nach der Aufräumarbeit Konflikte zwischen verschiedenen .NET-Versionen auftreten, könnte das daran liegen, dass die entfernte Version eine Abhängigkeit für eine aktuellere Version war. In diesem Fall hilft es nur, die entfernte Version erneut zu installieren.Es ist immer ratsam, beim Aufräumen alter .NET-Versionen, Framework-Versionen und SDKs vorsichtig zu sein und sicherzustellen, dass die Auswirkungen beim Entfernen einer bestimmten Version berücksichtigt werden. Im Zweifel hilft die erneute Installation einer entfernten Version, um das Problem kurzfristig zu beheben und sich so zumindest Zeit zu verschaffen, nach der genauen Ursache zu forschen.Auf dem Testsystem gab es im praktischen Versuch keine Probleme. Auch alle externen Komponenten ließen sich ohne Schwierigkeiten entfernen, und alle Anwendungen funktionierten im Nachhinein problemlos weiter.

Best Practices für die Versionsverwaltung von .NET

Die Verwaltung von .NET-Versionen, Frameworks und SDKs kann eine anspruchsvolle Aufgabe sein, insbesondere in großen oder komplexen Systemen. Durch die Einhaltung bestimmter Best Practices lässt sich jedoch sicherstellen, dass die .NET-Umgebung effizient verwaltet wird und sich die Notwendigkeit von Aufräumarbeiten deutlich minimiert.Ganz allgemein lässt sich ein Versionschaos nur minimieren oder verhindern, wenn schon bei der Installation darüber nachgedacht wird, ob eine neue Version tatsächlich erforderlich ist.Das betrifft insbesondere Systeme, die zur Softwareentwicklung genutzt werden, da hier häufig deutlich mehr Versionen, auch kleinere Versionssprünge, installiert sind. Im Zweifel lässt sich das bei der Entwicklung und beim Testen von Anwendungen aber nicht vermeiden. Dann ist es wichtig, eine Strategie zu haben, die älteren Versionen nach einer gewissen Laufzeit wieder zu entfernen. Das verkleinert das Fenster der installierten Versionen auf ein Minimum und trägt deutlich zur Reduzierung von Problemen bei.Daher ist eine Versionsverwaltung der installierten .NET-Versionen, Frameworks, SDKs und sonstigen Komponenten wichtig. Das verschafft Übersicht und Sicherheit bei der Verwaltung von Versionen. Wichtig ist, sich ins Gedächtnis zu rufen, dass das ein kontinuierlicher Prozess ist. Dieser scheint mit der Vereinheitlichung von .NET durch .NET 5, 6, 7 und bald 8 einfacher zu werden, ganz beseitigt ist die Notwendigkeit einer Prüfung aber dadurch immer noch nicht.

Fazit

In diesem Artikel haben wir uns mit dem Aufräumen alter
.NET-Versionen, Framework-Versionen und SDKs beschäftigt. Das .NET Framework hat sich in den vergangenen Jahren deutlich weiterentwickelt und die Wahrscheinlichkeit, dass verschiedene Versionen auf einem System installiert sind, ist sehr groß. Das Aufräumen alter .NET-Versionen ist allerdings wichtig, um die Systemleistung zu optimieren, Speicherplatz freizugeben und potenzielle Sicherheitsrisiken zu minimieren. Dabei sind aber die Abhängigkeiten und Kompatibilitätsanforderungen der verschiedenen .NET-Versionen zu berücksichtigen, um sicherzustellen, dass keine Anwendungen oder Projekte beeinträchtigt werden. Allgemein bietet die Migration zu neueren .NET-Versionen Vor­teile wie verbesserte Leistung, bessere Unterstützung für modernere Features und eine in Zukunft hoffentlich einfachere Migrationsstrategie, da sich die Anzahl der Framework-Versionen deutlich reduziert hat. Bis der Markt hier aber nachgezogen hat, wird es noch eine Zeit lang dauern.Erfreulicherweise gibt es eine ganze Reihe von Tools, die es ermöglichen und den Prozess vereinfachen, ältere Framework- und SDK-Versionen zu identifizieren und zu löschen. Wer sich noch nicht sicher ist, welche Auswirkungen ein solcher Löschvorgang hat, sollte einen Blick auf das Microsoft-Tool dotnet-core-uninstall werfen, mit dem sich bereits viele ältere Versionen komfortabel entfernen lassen und bei dem es Dry-Runs gibt, um diese Löschvorgänge zu prüfen.

Fussnoten

  1. Unterschiede zwischen .NET Core und dem .NET Framework, http://www.dotnetpro.de/SL2403dotnetuninstall1
  2. Das .NET-Uninstall-Tool von Microsoft, http://www.dotnetpro.de/SL2403dotnetuninstall2
  3. Microsoft-Dokumentation über das Löschen von Laufzeit-SDKs, http://www.dotnetpro.de/SL2403dotnetuninstall3
  4. Informationen zum sauberen Löschen von .NET-Versionen, http://www.dotnetpro.de/SL2403dotnetuninstall4
  5. Das Repository auf GitHub zum Total Uninstaller, http://www.dotnetpro.de/SL2403dotnetuninstall5
  6. Die Releases des .NET-Uninstall-Tools, http://www.dotnetpro.de/SL2403dotnetuninstall6
  7. Das Löschen des NuGet-Fallback-Verzeichnisses, http://www.dotnetpro.de/SL2403dotnetuninstall7

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

MAUI-Tools - Steuerelemente der Community
Nützliche Hilfen für besondere Aufgaben.
12 Minuten
14. Okt 2024
WPF/VB: Fenster auf dem richtigen Monitor starten - Tipp der Woche
Das Notebook steht links, der große Monitor rechts daneben. Die Anwendung soll auf dem großen Monitor starten – außer wenn der Anwender unterwegs arbeitet und kein zweiter Monitor angeschlossen ist.
2 Minuten
24. Mär 2022
Von .NET Core 3.0 zu .NET 5 - Microsoft Build
Aus .NET, .NET Core und Mono soll mit .NET 5 wieder eine gemeinsame Plattform für alle Anwendungen entstehen.
2 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige