Mit Windows 8.1, wird auch das Visual Studio 2013 released und dabei auch das neue .NET Framework in der Version 4.5.1
Auch wen vielen Leuten die Versionierung des .NET Frameworks etwas eigenartig vorkommen mag, gab es solche zwischensteps schon früher.
Ich erinnere hier an .NET 3.5 SP1 zum Beispiel :-).
Auf der BUILD 2013 wurden die neuen Features von .NET 4.5.1 vorgestellt.
Die Frage die sich hier nun stellt ist: "Was ist neu?" - eine Zusammenfassung:
Aufgegliedert wurde es in 3 Teilbereiche:
Entwickler Produktivität
- Edit & Continue im x64 Modus
Unter 32-Bit ein Feature das sehr unbewusst wahrgenommen wird ist nun endlich auch in einem 64-Bit Prozess möglich: Edit&Continue.
Hält Visual Studio 2013 bei einem Breakpoint so kann der Entwickler nun auch bei einer 64 Bit Anwendung den Code "on-the-fly" einfach ändern und den Debugge fortfahren lassen.
Dementsprechend können kleinere Codeanpassungen während dem debuggen durchgeführt werden.
Dieses Feature wurde auf der Plattform Uservoice bereits seit langen gewünscht - nun ist es drin (nach 8 Jahren endlich - https://visualstudio.uservoice.com/forums/121579-visual-studio).
Dieses Feature ist hierbei ein VS2013 Feature dementsprechend können WPF, WinForms, Win8, ASP.NET Anwendungen davon profitieren.
Für ASP.NET Web Anwendungen muss nur der IISExpress auf 64 Bit auch umgeschaltet werden -
dies versteckt sich ein wenig lässt sich aber mit dem Quick Launch recht schnell finden (STRG+Q).
- Function return value in debugger
Wer kennt folgenden Codeaufbau nicht?
Der return Wert kann leider nicht eingesehen werden - Neuerung im .NET Framework 4.5.1 aber - JETZT schon.
- Debug async/await code - "How did i get here?"
Async & Await ist ein tolles Feature für die asynchrone Programmierung. Beim debuggen ist nur leider oft das Problem wenn man sich den Callstack ansieht: "Wie bin ich hierher gekommen?". Mit .NET 4.5.1 hat sich das nun auch erledigt weil man nun im Callstack auch sieht wie man hierher gekommen ist.
- Win8 - Converting Stream to IRandomAccessStream
Dies ist endlich auf eine sehr einfache Art und Weise möglich da es eine neue Extension-Method "AsRandomAccessStream()" auf der Basisklasse stream gibt.
- Exception Handling
Exception Handling mit Windows 8.1 System.Exception ist nun detailierter bei Interop für WinRT APIs. Message als auch StackTrace bleiben nun erhalten.
- Nullable Types
Mit Windows 8.1 können innerhalb eines Windows Runtime Component Projektes nun in einer struct Nullable Types verwendet werden
- EF/ADO.NET Connection Resiliency
Dies ist ein neues ADO.NET Feature das eine geöffnete DbConnection automatisch "repariert" sollte diese unterbrochen werden. Das bedeutet - sollte die Verbindung zur Datenbank verloren gehen (Abbruch der Verbindung, WLAN, Stecker gezogen etc.) so versucht das ADO.NET Framework automatisch einen reconnect. Entity Framework baut darauf auf und mit EF 6 erhält man auch 4 stndard implementierungen für die Strategien (https://entityframework.codeplex.com/wikipage?title=Connection%20Resiliency%20Spec)
Anwendungsperformance
- ASP.NET App Suspension 90%
Reduzierung in der Zeit die zum (Neu-)Starten von Webanwendungen benötigt wird. Dies ist ein Feature von IIS 8.5 / Windows Server 2012 R2 da hier nun bei den Einstellungen des Arbeitsprozesses konfiguriert werden kann was passiert wenn der Prozess suspended wird: "Worker Process is suspended" - New Configuration Option: Idle Time-out Action --> Suspend/or Terminate
- On demand Large Object Heap Compaction for large objects (>85000 bytes) -
GCSettings.LOHCompactionMode keine OutOfMemoryException für große Objekte - Fragmentierung im Speicher minimieren
Contiuous Innovation
- Faster release cadence
Microsoft versucht auch beim .NET Framework einen schnelleren Releasezyklus zu ermöglichen. Die einzelnen Technologien werden auch aus dem Coreframework ausgelagert (ASP.NET, Entity Framework usw.) damit diese eigenständig aktualisiert werden können.
- NuGet Released - .NET Framework Packages
Neu im VS2013 ist nun, dass .NET Bestandteile per NuGet geupdatet werden können. Es gibt im NuGet Paketmanager nun einen weiteren Eintrag .NET Framework Packages. Dies sind .NET nahe Pakete die nun auch über NuGet bezogen werden können. Auf den ersten Blick sind es die "selben" wie schon immer gewohnt, es sind aber auch so Kandidaten dabei wie zum Beispiel die Razor engine. Wer will kann sich die Paketquelle auch in sein Visual Studio 2010 oder 2012 eintragen.