Alle Fakten zu Microsoft Framework

Sagen Sie, was Sie über die bisherige Lächerlichkeit der .NET Framework-Versionierung sagen werden, seit der Verwirrung von.NET 3.5SP1 haben sie versucht, es richtig zu machen. Es ist nicht die Magie der Java Version 6 Update 31 (Build 1.6.0_31-b05), aber es ist ein Anfang. Im Juli 2011 schrieb ich einen Beitrag über Probleme mit.NET und Microsoft Product Versioning, der die Aufmerksamkeit einiger Leute auf sich zog. Ich war sehr besorgt über einige „Plattform-Updates“ für.NET 4 und die Art und Weise, wie sie benannt wurden. Es gab Meetings und diese kleinen Updates haben jetzt einfachere Namensversionen wie NET 4.0.1, etc. Ich werde dir nicht sagen, dass es heute nicht verwirrend ist. Ich denke, dass die Dinge besser werden und weniger verwirrend. .NET 4.5 ist ein Schritt in die richtige Richtung der Transparenz bei der Versionierung. Sie können sich Microsoft Framework 4.5 auf der Seite von Microsoft herunterladen. Das.NET Framework kann auf zwei Arten versioniert werden. Es gibt „side by side installations“ und „in place upgrades“. Eine Hauptversion bedeutet Side-by-Side und eine Nebenversion bedeutet In-Place. Side-by-Side bedeutet, dass verschiedene Versionen von .NET auf derselben Maschine zusammenleben können. Vor-Ort-Upgrade bedeutet, dass die CLR die gleiche ist, aber neue Bibliotheken hinzugefügt werden, ebenso wie Bugfixes und Leistungssteigerungen: bis zum v4CLR und fügt neue Bibliotheken sowie Verbesserungen an der Kern-CLR selbst hinzu.

Das sagte Rick Strahl in seinem Blog

NET Framework ist ein Teil von Microsofts Software-Plattform

Beachten Sie, dass sich dieser In-Place-Ersatz sehr von den Side-by-Side-Installationen von .NET 2.0 und 3.0/3.5 unterscheidet, die alle auf der 2.0-Version der CLR ausgeführt wurden. Die beiden 3.x-Versionen waren im Grunde genommen Bibliotheksverbesserungen auf Basis der core.NET 2.0 Runtime. Beide Versionen liefen unter der.NET 2.0-Laufzeit, die während des gesamten 3.x-Zyklus unverändert blieb (außer bei Sicherheitspatches und Bugfixes). Das Update 4.5 ersetzt stattdessen vollständig die Laufzeit von .NET 4.0 und lässt die aktuelle Versionsnummer bei v4.0.30319. Rick hat einen tollen Beitrag mit vielen Details und Informationen. Jedoch bei allem Respekt, ich glaube  nicht, dass.NET 4.5 vs..NET 4 so unterschiedlich ist, wie Rick es andeutet. Tatsächlich haben .NET 3 und.NET 3.5 beide das bestehende System (und CLR) aktualisiert. Vielleicht wäre es sinnvoller gewesen, wenn 3 und 3.5 .NET 2.5 und .NET 2.8 heißen würden. Die Community ist immer darum bemüht, Änderungen zu brechen, so wie wir es hier mit .NET 4 und.NET 4.5 sind. Leider sind Realität und Marketingnamen nicht immer übereinstimmend, aber in Zukunft denke ich, dass wir alle dem zustimmen:

Hauptversion = Neue CLR
Minor Version = Bugfixes, neue Bibliotheken
Revision = Fehlerbehebungen, keine Änderungen, kleine Verbesserungen

.NET 4.5 ist keine radikal andere side-by-side CLR. Ein neuer CLR wäre ein theoretisches.NET 5 Meiner Meinung nach. Könnte etwas mit .NET 4.5 nicht funktionieren? Deshalb ist es jetzt in der Beta-Phase, also ist es jetzt an der Zeit, das Wort zu ergreifen. Es ist möglich, dass etwas kaputt gehen könnte, aber es ist unwahrscheinlich, so der.NET Blog. Hier sind die bekannten.NET 4.5 Änderungen – die meisten sind ziemlich obskur. Die Arten von brechenden Veränderungen, die ich selbst in der Wildnis gesehen habe, waren in erster Linie, wenn sich die Leute auf Reflexion oder interne Datenstrukturen verlassen. Diese Internals sind keine öffentlichen Aufträge, also können sie sich geändert haben. Ich merke, dass, wenn eine Änderung SIE bricht, es sich wie eine Situation anfühlt, in der „100% der Anwendungen brechen werden….meine hat es getan! Es ist scheiße, aber in der Tat gibt es minimale Änderungen in .NET 4.5. Kann ich .NET 2.0, 3.5, 4 und 4.5 Apps bekommen, die alle zusammen auf meinem System laufen? Ja. Kann ich mit Visual Studio 11 Beta Apps mit verschiedenen Versionen entwickeln? Sicher, Sie können alle diese Versionen multi-target und sogar mehr Targeting-Pakete einbinden. Ich werde Ende dieser Woche einen Blogbeitrag über Portable Libraries schreiben, eine neue Version in.NET 4.5, die das Erstellen von Bibliotheken für jede CLR (einschließlich Xbox, Phone, Mono und andere) ermöglicht.

SICHERE ENTWICKLUNG SOWOHL FÜR .NET 4 ALS AUCH.NET 4.5

Es wurde in Blogs angedeutet, dass, wenn Sie .NET 4.5 auf Ihrem Computer installieren, Sie nicht sicher für.NET 4 entwickeln können. Rick vergleicht zwei DLLs auf einem.NET 4-Computer und erneut nach dem Upgrade auf.NET 4.5. Wie können Sie sicher gegen.NET 4 vorgehen, wenn Sie.NET 4.5 installiert haben? Du hast diese.NET 4 DLLs nicht mehr, oder? Eigentlich tust du das. Sie befinden sich in C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework. Lassen Sie uns das auf einer Maschine mit Visual Studio 11 Beta testen. Ich werde eine DLL und eine Referenz System.Web erstellen und einen der hinzugefügten Typen in dieser Assembly verwenden. Ja, es ist ein Screenshot von Code, aber halte durch.

Jetzt werde ich die Eigenschaften meines Projekts von .NET 4.5 auf.NET 4.5 ändern, sonst nichts. Ich werde bauen. Beachten Sie, dass der Typ nicht vorhanden ist, ich erhalte einen Build-Fehler und kann nicht auf den Namensraum verweisen. Sie werden wissen, ob Sie die neue .NET 4.5 Funktionalität verwenden. Das Multi-Targeting-Build-System wurde dafür entwickelt und existierte bereits seit .NET 3.5. Diese Referenzbaugruppen sind dazu da, diese Art von Dingen zu erfassen. Während also .NET 4 und.NET 4.5 zur Laufzeit nicht Seite an Seite auf Ihrem System leben, weiß Visual Studio von allen verschiedenen Versionen von.NET und der Compiler wird beim Erstellen verschiedene Versionen referenzieren. Wenn Sie eine Client-App wie WinForms, Console, WPF, etc. erstellen, geschieht dies alles automatisch. Ihre app.config enthält die Tatsache, dass Sie .NET 4.5 benötigen und Sie werden sogar eine Aufforderung zur Installation erhalten. Wenn ich also meine.NET 4.5 Console App auf einem.NET 4.0 Rechner ausführe, bekomme ich jetzt einen schönen Dialog.

UPDATE #2: Das System gibt einen Fehler aus, wenn eine ASP.NET 4.5-Anwendung auf einem ASP.NET 4-System bereitgestellt wird. Die Standardvorlagen für ASP.NET 4.5-Anwendungen beinhalten das targetFramework-Attribut, das auf 4.5 gesetzt ist, wie folgt: Dies führt zu einem YSOD, wenn Sie einen 4.5 bis 4 einsetzen.

Maschinen wie diese: „Das Attribut’targetFramework‘ referenziert derzeit eine Version, die später als die installierte Version des.NET Frameworks ist.“

AKTUALISIERUNG: Wenn Sie .NET 4.5 zur Laufzeit wirklich, wirklich erkennen wollen, überprüfen Sie keine Versionen oder Build-Nummern. Überprüfen Sie, ob das Feature, das Sie verwenden möchten, vorhanden ist. Aus dieser Stackoverflow-Frage von Christian K. geht es beispielsweise darum, wie man .NET 4.5 programmgesteuert erkennt.

David vom CLR-Team (in den Kommentaren) sagt jedoch, dass dies keine gute Idee ist. Er sagt, man soll prüfen, ob ein wichtiges Merkmal vorhanden ist und es nutzen. Betrügen Sie nicht und schlussfolgern Sie nicht.NET-Versionen.