System.Environment.Version liefert einen ungenauen Wert

8

Ich habe eine kurze Frage: Wenn ich zu HELP- & gt; About in Visual Studio 2012 gehe, zeigt das Fenster an, dass die Version von .NET, die ich verwende, 4.5.50709 ist. Allerdings, wenn ich den folgenden Code ausführen:

%Vor%

Ich bekomme Version 4.0.30319.18034. Was gibt? In Troelsens Pro C # 5 & amp; .NET 4.5 Framework , auf Seite 83 gibt es an, dass die Version-Eigenschaft ein Objekt zurückgibt, das die .NET-Plattformversion darstellt. Ist das falsch? Der Thread für eine vorherige Frage hat angegeben, dass diese Eigenschaft die CLR-Version zurückgibt. Wenn dies der Fall ist, was ist der Zweck des Version-Objekts (wie in, was ist die Kenntnis der CLR-Version im Gegensatz zu der Framework-Version), und wie erhalten Sie tatsächlich die Framework-Version selbst?

    
Vincent Alegrete 22.04.2013, 00:20
quelle

2 Antworten

17

Die CLR (Common Language Runtime) Version ist 4.0.30319.18034. Es beginnt mit 4.0.30319, da .NET 4.5 ein direktes Upgrade der .NET 4.0-Assemblys ist.

  

Das 4.5-Update ersetzt die .NET 4.0-Laufzeit vollständig und lässt die tatsächliche Versionsnummer auf v4.0.30319 festgelegt.

     

( Quelle 1 , Quelle 2 )

Aber Ihre Versionsnummer stellt wahrscheinlich .NET 4.5 mit einigen Updates dar, wie von dieser Liste von Benutzer Daniel abgeleitet werden kann :

  

Hier sind einige Beispiele für Laufzeitversionen, die ich gesehen habe:

     
  • 4.0.30319.1 = .NET 4.0 RTM
  •   
  • 4.0.30319.269 = Häufigste .NET 4.0-Version, die wir in den von unseren Benutzern gesammelten Daten sehen
  •   
  • 4.0.30319.544 = eine andere .NET 4.0 Version, die ein kleiner Teil unserer Benutzer installiert hat
  •   
  • 4.0.30319.17626 = .NET 4.5 RC
  •   
  • 4.0.30319.17929 = .NET 4.5 RTM
  •   
  • 4.0.30319.18010 = aktuelle Version auf meinem Windows 8 Rechner
  •   

Die Major-, Minor- und Build-Versionsnummern haben sich nicht geändert, daher denke ich, dass sie nicht der Meinung waren, dass der Unterschied zwischen .NET 4.0 und 4.5 groß genug wäre, um für die meisten Leute von Bedeutung zu sein. Anwendungen für .NET 4.0, die einige Version 4.0.30319 erwarten, funktionieren unter .NET 4.5 weiterhin wie erwartet.

Unabhängig davon, ob Sie für .NET 4.0 oder 4.5 codieren, kompilieren Sie für genau die gleichen .NET-Assemblys. Der einzige Unterschied besteht darin, dass einige neue Klassen von .NET 4.5 beim Kompilieren gegen .NET 4.0 versteckt sind (als ob sie niemals existierten). Der einzige zuverlässige Weg, um den Unterschied zwischen .NET 4.0 und 4.5 zu erkennen, scheint der von Christian vorgeschlagene ziemlich hackische Ansatz zu sein. in seinem Beitrag , das keine Versionsnummern beinhaltet:

  

Die ReflectionContext -Klasse scheint mit dem .NET Framework 4.5 völlig neu zu sein und lebt bequem in mscorlib . Du könntest so etwas machen.

%Vor%
    
Virtlink 22.04.2013 00:22
quelle
2

Genau wie bei einer Übung habe ich mich gefragt, wie Visual Studio die .NET-Version aufgerufen hat. Sie können die Registrierung abfragen, um zu sehen, welche Versionen installiert sind, und ich kam mit diesem Code:

%Vor%     
Joey Gennari 22.04.2013 01:28
quelle

Tags und Links