Vortragsvideo: Neuigkeiten in C# 6 und Visual Studio 2015

Roman Schacherl hat am 8. Jänner 2015 einen Gastvortrag an der FH Hagenberg (OÖ) gehalten - vor einem vollständig gefüllten Hörsaal (vielen Dank allen TeilnehmerInnen!). Die Zusammenfassung der Neuigkeiten, den Stream zum Nachhören und Direktlinks zu den Themen im Video finden Sie hier!

Übrigens: Wer das kleine Vortrags-Intro selbst nachspielen möchte: unter keysleft.com können Sie die Anzahl der für Sie verbleibenden Tastenanschläge selbst berechnen ;-)

Edit 25.02.2015: Roman hat einen ähnlichen Vortrag auch auf der BASTA (www.basta.net) gehalten, dort aber bereits mit der Visual Studio 2015 CTP 6. Die Neuigkeiten gegenüber dem Jänner-Vortrag finden Sie hier.

Visual Studio 2015

Window Layout speichern (Video: 11:35)

Visual Studio 2015 ermöglicht es, Fensterlayouts als Template zu speichern und (auch per Shortcut: Strg+Alt+1..9) abzurufen.

Projektvorlagen, Shared Projects (Video: 12:57)

Xamarin ist von Beginn an im Projektdialog ersichtlich, es gibt eigene Projektvorlagen für Android- und iOS-Apps. Es ist trotzdem weiterhin notwendig, Xamarin zu lizensieren - man wird aber Schritt für Schritt durch diesen Vorgang geleitet.

Zusätzlich gibt es die von Universal Apps bereits bekannten “Shared Projects” nun als eigene Vorlage. Damit können Sie Klassen, Ressourcen, Bilder, etc. in ein “Shared Project” auslagern und dieses Projekt dann von anderen Projekten (zum Beispiel einer WPF-Anwendung und einer Windows Store Anwendung) referenzieren. Alle Inhalte des “Shared Projects” verhalten sich, als ob sie direkt in den referenzierten Projekten enthalten wären (früher verwendete man dafür File-Links).

Refactoring (Video: 16:35)

Abbildung 1

  • Neue Code Fixes
    • Remove unnecessary usings
    • Introduce local
    • Introduce constant
    • Make the containing scope async
  • Vorschau bei Code Fixes
  • Code Fixes als NuGet-Package (zum Beispiel Azure.CodeAnalysis)
  • Syntaxhighlighting in Intellisense-Tooltips, Code Fixes, etc.
  • Live-Vorschau und intelligente Auto-Korrektur beim Umbenennen von Variablen odgl.
  • Schreiben von eigenen Code Fixes: Roslyn Samples and Walkthrougs

Smart Unit Tests (Video: 29:18)

Smart Unit Tests (vormals Pex) ermöglichen das Generieren von Unit Tests für einzelne, bereits implementierte Methoden. Dabei werden die möglichen Pfade dieser Methode untersucht und möglichst sinnvolle Eingabeparameter gesucht, um alle diese Pfade abzudecken. Etwaige (erwartete) Exceptions oder Code Contracts werden ebenfalls berücksichtigt. Ein Feature, das mit Vorsicht zu genießen ist - daher hab ich mir zuvor auch ein Gelöbnis vom anwesenden Publikum eingeholt.

Debugging: Perf Tips (Video 35:15)

Bei Breakpoints wird angezeigt, wie viel Zeit seit dem letzten Breakpoint vergangen ist - und wie viel Zeit davon in der CPU verbraucht wurden.

Abbildung 2

Conditional Breakpoints (Video: 38:38)

Die Einstellungen für Conditional Breakpoints werden nun nicht mehr in einem modalen Dialog dargestellt, sondern als Peek Window (Intellisense war auch früher schon verfügbar - entgegen meiner Aussage beim Vortrag.. sorry und danke an Matthias Kern für die Korrektur). Außerdem kann bei einem Breakpoint auch eine Meldung auf die Konsole geloggt werden.

Abbildung 3

Lambda-Expressions und LINQ im Debug Mode (Video: 42:35)

Endlich: Im QuickWatch-, Watch- und Immediate Window können Sie während des Debuggings auch Lambda-Expressions oder LINQ einsetzen.

Abbildung 4

WPF-Erweiterungen (Video: 44:48)

Für Styles oder Ressourcen erhalten Sie im XAML-Editor mit Alt+F12 ein Peek Window, das den entsprechenden Abschnitt sofort darstellt.

Außerdem sollte ein “Live Visual Tree”- und ein “Live Property Explorer”-Fenster während des Debuggings ein Verändern von WPF-Styles oder -Properties ermöglichen - ähnlich einem DOM-Explorer in der Web-Entwicklung. Dieses Feature ist noch nicht in der Preview enthalten, aber auf der Roadmap des WPF-Teams angekündigt.

Edit: Mit der CTP 6 wurde dieses Feature geliefert!

C# 6 (Video: 49:52)

Ich habe gemeinsam mit Rainer Stropek im Dezember 2014 bereits einen sehr ähnlichen Vortrag über C# 6 gehalten, die Inhalte sind auf Rainer’s Blog perfekt zusammengefasst.

Als Ergänzung noch die Zeiten für das Video:

  • Null Conditional Operator (00:53:11)
  • nameof Operator (01:03:30)
  • Dictionary Initializers (01:04:51)
  • Auto-Property Initializers (01:05:48)
  • Expression Bodied Functions and Properties (01:08:18)
  • Static Using Statements (01:10:08)
  • Exception-Handling (01:11:59)

    Hinweis (aufgrund einer Rückmeldung von Philipp Haider - danke!): meine im Vortrag gezeigte “Alternative” zu Exception Filters, nämlich das erneute Werfen der Exception im catch-Block sollte zum einen mit throw (statt throw ex) erfolgen und ist auf CLI-Ebene nicht komplett gleichbedeutend mit der C# 6-Variante (siehe auch https://roslyn.codeplex.com/discussions/541301)

  • String Interpolation (01:16:16)