Frage

Nach dem Upgrade von VS11 Beta auf VS2012 RC - habe ich vom Targeting .NET 4.0 auf .NET 4.5 geändert.Ich merke in app.config nach Abschnitt

generasacodicetagpre.

Was ist das obige für?

Wenn ich versucht habe, ein neues Projekt zu erstellen (kein Upgrade des vorhandenen Projekts) von in VS2012 RC, sehe ich den obigen Abschnitt nicht in app.config

War es hilfreich?

Lösung

Das ist ein Nebeneffekt der Ewigen .NET-Versionen von Quagmire. .NET 4.5 ist keine seitlich-by-seitige Version des .NET-Frameworks, er ersetzt vollständig eine .NET 4.0-Installation. Ähnlich wie 3.0 und 3.5 ersetzte eine .NET 2.0-Installation.

Die Updates 3.0 und 3.5 waren ziemlich mild, der Rahmen hat gerade ein paar neue Baugruppen erworben. Die Clr und die Kernbasisklassen-Baugruppen haben sich nicht geändert. Viel.

Die in der 4.5-Version des Frameworks enthaltene clr.dll-Datei hat noch die Versionsnummer 4.0.30319. Dieselbe Versionsnummer der 4.0-Version des CLR. Und hat keine Probleme mit der Ausführung .NET-Apps, die auf den .NET 4.0-Framework richten.

Diese Rahmenversion wurde jedoch innen stark modifiziert. Es hat die Sprachprojektion erworben, die das Schreiben von Metro-Apps ermöglicht, die auf Windows 8 in einer verwalteten Sprache ausführen. Schwere Änderungen umfassen bewegliche Klassen von einer Baugruppe zur anderen, wodurch der Deploy auf einem Telefon oder einem Schiefer bereitgestellt wird, um bescheiden zu sein. Die zu Ihrem Projekt hinzugefügte app.exe.config-Datei stellt sicher, dass Ihr Benutzer diese erforderliche Version hat. Die Bereitstellung der .config-Datei ist optional, aber der Benutzer wird jedoch eine ziemlich ungenaue Ausnahmenachricht sehen, wenn er nur .NET 4.0 installiert hat. Nicht wirklich sicher, wie das aussieht. Die automatische Installation, die ausgelöst wird, wenn er nicht 4,5 hat, funktioniert auch nicht.

Andere Tipps

Während Hans Patant in allem richtig ist, was er sagt, dass er einen Schlüsselpunkt vermisst, der die Rolle des PE-Headers in diesem Debakel ist.

Da DOTNET 4.5 eine In-Place-Installation von DOTNET 4.0 ist, und da die DOTNET-Versionsnummer nicht aktualisiert wird, ist das Ergebnis, dass Binärdateien mit DOTNET 4.5 die alte DOTNET 4.0-Versionsnummer in ihren Binärdateien haben PE-Header (4.0.30319).

Da der CLR diesen Wert in dem PE-Header verwendet, um zu bestimmen, welche Version des DOTNET-Frameworks zum Laden, und da dieser Wert nicht für Anordnungen ändert, die gegen dotnet 4.5 erstellt wurden, dann hat der CLR in Abwesenheit von zusätzlichen Informationen Keine Möglichkeit zu wissen, ob eine Baugruppe mit 4.0.30319 im PE-Header eine Verbindung zu DOTNET 4.0 oder 4.5 verlangt.

Es ist das Vorhandensein des unterstützten Elements in app.config, das diese zusätzliche Informationen an die CLR bietet. Wenn Sie also eine DOTNET 4.5-Anwendung mit dem auf einem System vorhandenen Ertragseintrag auf einem System starten, das nur dotnet 4.0 installiert ist, wird der CLR eine hilfreiche Nachricht angezeigt, die Sie darüber informiert, dass Sie nicht über die erforderliche Version von dotnet installiert sind. Wenn Sie dieselbe DOTNET 4.5-Anwendung ohne den gewinnberechnungRuntime-Eintrag auf einem System starten, das nur dOTNET 4.0 installiert ist, kann die Anwendung möglicherweise ausführen, dann jedoch abstürzen, wenn er später versucht, ein dotnet 4,5 zu verwenden Feature.

Während Projekte mit VS2012 RC und Targeting DOTNET 4.5 den gewinnbringenden DOTNE-Eintrag vermisst haben, haben Projekte, die mit VS2012 RTM erstellt wurden, den Eintrag.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top