Entwickler-Ecke

Sonstiges (.NET) - Frameworkversion ermitteln


ledge - Mo 18.01.10 17:06
Titel: Frameworkversion ermitteln
Hallo zusammen,

gibt es einen funktionierenden Weg die auf einem Rechner installiereten Frameworkversionen zu ermitteln?
Wenn es geht bitte mit Beispiel.

Gruß, Wolle


danielf - Di 19.01.10 10:47

Hallo Wolle,

normal verwende ich ein Setup-Projekt, dass bei der Installation sicherstellt, dass die richtige RunTime-Umgebung vorhanden ist und ggfs. nachinstalliert. Generell interessiert es mich trotzdem, ob und wie es möglich ist. Google war auch ganz gesprächig ;)

http://dotnet.mvps.org/dotnet/articles/dnchk/ Finde ich sehr gut. Ich denke irgendwo findet man bestimmt auch schon eine Library die die Registry dementsprechend ausliest.

Gruß Daniel

Edit: System.Environment.Version [http://msdn.microsoft.com/de-de/library/bb979474.aspx]


ledge - Di 19.01.10 14:45

Hallo Daniel,

das Beispiel mit System.Environment.Version ist leider ein Visual Basic Beispiel.
Bekomme das irgendwie nich umgestrickt.

Gibt es kein Beispiel wie man das unter c# genau macht?

Gruß, Wolle


danielf - Di 19.01.10 14:56

?

System.Environment.Version gehört zum .NET-Framework und ist damit genau so verwendet bar wie bei VB. Was für eine VisualStudio Version hast du?


JüTho - Di 19.01.10 15:04

Bei mir steht es als C#-Beispiel. Das ist aber so primitiv, dass es auch ohne Beispiel-Code geht:

Environment.Version ist eine statische Eigenschaft, die die Nummern für Haupt- und Nebenversion, Build und Revision der Common Language Runtime beschreibt. Wie für jedes Objekt gibt es natürlich auch dafür die ToString-Methode, oder du fragst du Bestandteile einzeln ab, die unter Version-Member aufgeführt sind.

Aber ich glaube, damit ist die eigentliche Frage nicht beantwortet: Welche Versionen sind installiert?

Bei mir stehen sie als Unterverzeichnisse von C:\Windows\Microsoft.NET\Framework. Man könnte diesen Pfad finden über: Environment.SpecialFolder.System -> ein Verzeichnis darüber -> Microsoft.NET -> Framework. Das geht dann vermutlich so:

C#-Quelltext
1:
2:
3:
string path = Path.GetFullPath
  ( Path.Combine(Environment.SpecialFolder.System, @"..\Microsoft.NET\Framework") );
string[] versions = Directory.GetDirectories(path);

(Nicht getestet, nur geschrieben)

Der vollständige Weg sollte über die Registry gehen, aber das habe ich nicht auch noch versucht.

Gruß Jürgen