Feststellen der .NET-Version

Eine ältere .NET-Anwendung startet ohne weiteres auf einem neueren .NET 4.x, könnte aber im Ablauf Probleme bekommen. Wer prüfen will, ob die .NET-Version, für die die Anwendung kompiliert wurde, der installierten .NET-Version entspricht, kann folgenden C#-Code verwenden.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Dr. Holger Schwichtenberg

Eine ältere .NET-Anwendung startet ohne weiteres auf einem neueren .NET 4.x, könnte aber im Ablauf Probleme bekommen. Wer prüfen will, ob die .NET-Version, für die die Anwendung kompiliert wurde, der installierten .NET-Version entspricht, kann folgenden C#-Code verwenden.

Wie schon die Vorgängerversionen .NET 4.5 bis 4.6.2 ist auch die Version 4.7 ein "In-Place-Update", das vorherige Installationen von .NET 4.x überschreibt. Windows 10 bringt .NET 4.7 automatisch im "Creators Update" (alias Redstone 2) mit. Für ältere Betriebssysteme gibt es ein manuell installierbares Update, wobei Betriebssysteme vor Windows 7 bzw. Windows Server 2008 R2 nicht mehr unterstützt werden.

Laut Microsoft ist .NET 4.7 "hochkompatibel" zu den Vorgängerversionen. Unter der Überschrift "Retargeting Changes for Migration from .NET Framework 4.6.2 to 4.7" gibt es dennoch eine Liste von Änderungen, die verhindern können, dass ältere .NET-Anwendungen unter .NET 4.7 korrekt laufen.

Eine ältere .NET 4.x-Anwendung startet ohne weiteres auf .NET 4.7, könnte aber im Ablauf Probleme bekommen. Wer prüfen will, ob die .NET-Version, für die die Anwendung kompiliert wurde, der installierten .NET-Version entspricht, kann folgenden C#-Code verwenden:

Console.WriteLine($"Anwendung kompiliert für: {AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName}");
var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\");
var aktuelleVersion = key.GetValue("Version") + " / " + key.GetValue("Release");
Console.WriteLine($"Anwendung läuft auf: {aktuelleVersion}");

Wenn eine Anwendung zum Beispiel für .NET 4.6.2 kompiliert wurde und nun unter .NET 4.7 läuft, bekommt man die Ausgabe

Anwendung kompiliert für: .NETFramework,Version=v4.6.2
Anwendung läuft auf: 4.7.02046 / 460798

Die Zahl hinter dem Schrägstrich in der zweiten Zeile liefert Details über das Release. Die Interpretation der Werte findet man im Dokument "How to: Determine Which .NET Framework Versions AreInstalled".

()