Visual Studio 2013 sieht scharf

Visual Studio 2013 für C#-Entwickler
Kommentare

Was für einen Tischler sein Werkzeug, ist für einen Softwareentwickler im Microsoft-Umfeld Visual Studio. Nur wer es in- und auswendig kennt, profitiert von den eingebauten Produktivitätsfunktionen. Die aktuelle Version von Visual Studio ist 2013, seit Ende Januar steht auch bereits das erste Update zur Verfügung. Anlass genug, die Verbesserungen unter die Lupe zu nehmen, die Microsoft für C#-Entwickler eingebaut hat. Zahlt sich ein Umstieg aus? Dieser Artikel hilft Ihnen, diese Frage für Ihre konkrete Situation zu beantworten.

Eine der wichtigsten Fragen zuerst: Wie sieht es mit der Rückwärtskompatibilität aus? Müssen alle Entwickler eines Teams auf VS 2013 umsteigen oder kann man alte und neue Versionen vermischen? Die gute Nachricht ist, dass ein Mischbetrieb durchaus möglich ist. VS 2013 ist in Sachen Project- und Solution-Files teilweise rückwärtskompatibel bis VS 2010 SP 1. Im Zweifelsfall empfiehlt sich ein Blick auf die Kompatibilitätsmatrix in der MSDN Library. Wie man dort sieht, ist man beim Parallelbetrieb von VS 2012 und 2013 in den meisten Fällen auf der sicheren Seite. Wenn man in manchen Projekten an das ältere Visual Studio gebunden ist (z. B. wegen Reporting Services oder BizTalk), kann man immer noch mehrere Versionen auf einem Computer gleichzeitig betreiben.

Visual Studio und die Cloud

Visual Studio kann sich dem allgemeinen Trend in Richtung Cloud nicht entziehen. Die in dieser Hinsicht wichtigste Entwicklung ist sicher die produktive Verfügbarkeit von Visual Studio Online aka Team Foundation Services, den TFS in der Cloud. Den Schritt von Preview zu RTM hat Microsoft parallel zum Erscheinen von Visual Studio 2013 gemacht. Wer also schon immer mit dem TFS geliebäugelt, den Aufwand des Installierens und Wartens aber gescheut hat, hat jetzt eine SaaS-Alternative mit monatlicher, nutzungsabhängiger Abrechnung. Die Preispalette reicht dabei je nach Größe des Teams und benötigtem Funktionsumfang von dauerhaft kostenlos (Visual Studio Online Basic für Teams mit bis zu fünf Benutzern) bis richtig teuer. Selbst wenn Sie einen lokalen TFS oder ein anderes ALM-Werkzeug verwenden, macht die Cloud-Integration von Visual Studio 2013 für Sie möglicherweise Sinn: Sie können sich jetzt in Visual Studio mit Ihrem Microsoft-Account anmelden (Abb. 1). All Ihre Einstellungen werden dadurch in die Cloud synchronisiert. Diese Funktion bezeichnet man als Roaming Settings. Wer regelmäßig auf mehreren Computern entwickelt, wird schnell zu schätzen lernen, dass alle Einstellungen durch die Anmeldung synchronisiert werden und man überall die gewohnte Entwicklungsumgebung vorfindet. Nähere Informationen zum Synchronisieren von Einstellungen finden Sie hier.

Abb. 1: Visual Studio nach Anmeldung mit einem Microsoft-Account

Nützliche Kleinigkeiten

Bevor wir zu den Highlights kommen, hier noch eine Liste kleinerer Verbesserungen, die Visual Studio 2013 mitbringt:

  • Im Notification Center (Abb. 1) wird man über wichtige Neuigkeiten wie das Ablaufen einer Testlizenz oder verfügbare Updates informiert.
  • Neuigkeiten liefert Visual Studio jetzt auch direkt auf der Startseite.
  • Beim ersten Start von Visual Studio kann man zwischen den Themes Schwarz, Weiß und – jetzt neu – Blau wählen. Das gewählte Theme wird ebenfalls über die Cloud zwischen Ihren Computern synchronisiert.
  • Im Optionendialog können Sie jetzt suchen – angesichts der Vielzahl an Einstellungen oft nützlich.
  • Die Icons wurden im Vergleich zu Visual Studio 2012 wieder eine Spur farbenfroher.
  • Über die Feedbackschaltfläche im Fenster rechts oben können Sie Microsoft mitteilen, was Ihnen besonders gut oder besonders schlecht gefällt.
  • Die Scroll Bars können Regionen in einer C#-Datei hervorheben, die verändert wurden, bei denen Fehler oder Warnungen existieren etc. Man kann auch die Breite der Scroll Bar verändern, um sie in den Map Mode umzuschalten (Abb. 2). Durch einen Rechtsklick auf die Leiste gelangen Sie zum Kontextmenü, wo Sie die Darstellung konfigurieren können.
  • Geschlossene geschwungene Klammern werden von Visual Studio jetzt standardmäßig automatisch eingefügt. Dafür sind keine Productivity-Power-Tools notwendig.

Doch genug der Kleinigkeiten. Lassen Sie uns zu den größeren Neuigkeiten kommen.

Abb. 2: Code Map in der Scroll Bar

Edit and Continue in 64 Bit

Edit and Continue ermöglicht es Ihnen, während des Debuggens bei angehaltenem Programm den Code zu verändern, ohne die Debugging-Sitzung unterbrechen und das Programm neu übersetzen zu müssen. Speziell bei großen Projekten, bei denen das Kompilieren lange dauert, kann das einen Produktivitätsschub bringen. Edit and Continue selbst gibt es in Visual Studio schon länger. Neu in der Version 2013 ist die Unterstützung von 64 Bit. Die unterstützten Arten von Codeänderungen während des Debuggens sind leider immer noch stark limitiert. Das schränkt den Einsatz von Edit and Continue in der Praxis häufig ein.

[ header = Seite 2: Asynchrone Call Stacks ]

Asynchrone Call Stacks

Nun zu einer meiner persönlichen Lieblingsfunktionen des neuen Visual Studios. Asynchrone Programmierung ist heute keine Besonderheit mehr, sondern Alltag. C# hat uns das Leben mit den Schlüsselwörtern async und await stark erleichtert. Debuggen von asynchronem Code war aber in der Vergangenheit nicht ganz unproblematisch. Listing 1 zeigt ein sehr einfaches Beispielprogramm. Setzte man einen Breakpoint in die Methode GetSomeValueAsync, war der Call Stack in Visual Studio 2012 alles andere als aussagekräftig. Das wurde in Visual Studio 2013 durch die Asynchronous Call Stacks verbessert. Abbildung 3 stellt die Call Stacks für das Programm aus Listing 1 in Visual Studio 2012 und 2013 gegenüber. Man sieht, dass der Call Stack in der neuen Version richtig dargestellt wird.

class Program
{
  static void Main(string[] args)
  {
    new Program().RunAsync().Wait();
  }

  private Task RunAsync()
  {
    return DoComplexCalculationAsync();
  }

  private async Task GetSomeValueAsync()
  {
    // Force async completion
    await Task.Yield();

    // Simulate an operation with high latency
    await Task.Delay(TimeSpan.FromSeconds(1));

    // Return a random value
    var rand = new Random();
    return rand.Next(100);
  }

  private async Task DoComplexCalculationAsync()
  {
    // Force async completion
    await Task.Yield();

    // Generate two values
    var x = 42;
    var y = await GetSomeValueAsync();

    // Simulate complex calculation
    return x + y;
  }
}

Abb. 3: Call Stack mit asynchronen Methoden in Visual Studio 2012 (links) und 2013 (rechts)

Code Maps

Nutzer der Ultimate Edition von Visual Studio 2013 erhalten eine neue, zusätzliche Visualisierungsform der Call Stacks, die problemlos mit asynchronem Code umgehen kann: Code Maps. Hält man ein Programm im Debugger an, kann man eine Code Map erstellen, die den Call Stack als Graph visualisiert (Abb. 4). Führt man das Programm weiter aus und bleibt bei weiteren Breakpoints stehen, wird die Map erweitert. Auf diese Weise soll das Verständnis für die verschiedenen Wege durch den Code und schlussendlich die Suche nach Bugs erleichtert werden.

Das Besondere an Code Maps ist, dass Sie diese manuell verändern können. Sie können die Anordnung der Knoten ändern, Kommentare hinzufügen, Knoten zusammenfassen und vieles mehr. Die Map können Sie in einer anderen Debugging-Sitzung – z. B. nach der Korrektur eines Bugs – wiederverwenden. Wenn Sie eine besondere Konstellation mit Ihren Kollegen diskutieren möchten, können Sie die Maps natürlich auch in Bilddateien exportieren.

Abb. 4: Debugging mit einer Code Map in Visual Studio 2013 Ultimate Edition

Neues Tasksfenster

Neben Call Stacks und Code Maps bietet das neue Tasksfenster (Abb. 5) eine weitere Verbesserung in Sachen asynchroner Programmierung. Es zeigt eine Liste aller Tasks mit ihrem jeweiligen Status an, wodurch es ähnlich wie das schon bekannte Parallel-Stacks-Fenster und als neue Version hiervon zu verstehen ist.

Abb. 5: Das Tasksfenster

[ header = Seite 3: Return Values ]

Return Values

Die nächste Neuerung ist eine weitere Erleichterung für das Debugging. Werfen Sie nochmals einen Blick auf die Methode GetSomeValueAsync in Listing 1. Sie gibt das Ergebnis eines Funktionsaufrufs zurück, ohne diesen vorher in einer Variablen zu speichern. Beim Debuggen hätte man früher keine Chance gehabt, am Ende der Methode herauszufinden, welcher Wert zurückgegeben wurde. Das ändert sich mit Visual Studio 2013. Im Autos-Fenster werden die Ergebnisse solcher Methodenaufrufe angezeigt (Abb. 6).

Abb. 6: Rückgabewert einer Funktion im Autos-Fenster

Code Lenses

Nachdem unsere Aufmerksamkeit bisher verstärkt dem Debugging galt, wechseln wir nun zum C#-Editor. Code Lenses sind in diesem Bereich eine neue Funktion, an die man sich schnell gewöhnt. Leider steht sie wie auch die Code Maps nur den Anwendern der Ultimate Edition zur Verfügung. Code Lenses zeigen Informationen über den Code direkt im Editor an und ermöglichen eine rasche Navigation. Die gebotenen Informationen reichen von Referenzen auf eine Funktion über die Anzahl der Unit Tests mit deren Status bis hin zu verknüpften Informationen aus dem TFS (Abb. 7). Interessierte Leser finden weitere Details über Code Lenses hier.

Abb. 7: Code Lenses in Visual Studio 2013 Ultimate Edition

Peek Definition

Die meisten unter Ihnen kennen wahrscheinlich die Go-To-Definition-(F12-)Funktion. Visual Studio 2013 kommt jetzt mit einer zusätzlichen „Light“-Variante dieser Funktion: Peek Definition (ALT + F12). So praktisch F12 auch ist, da der gesuchte Code in einem eigenen Fenster geöffnet wird, verliert man oft den Fokus auf jenen Codeteil, den man eigentlich gerade bearbeitet. Genau dieses Problem löst ALT + F12. Der gesuchte Code wird direkt im Editorfenster unterhalb der aktuellen Position eingeblendet und kann dort sogar bei Bedarf geändert werden. Abbildung 8 zeigt Peek Definition ausgeführt auf der DataContext.Create-Methode. Deren Implementierung wird dadurch unterhalb des Methodenaufrufs eingeblendet. Details über die Funktionsweise von Peek Definition sowie die zugehörigen Tastaturkürzel finden Sie hier.

Abb. 8: Peek-Definition-Funktion

[ header = Seite 4: Navigate To ]

Navigate To

Gerade in großen Projekten ist es nicht immer einfach, sich im Code zurechtzufinden. Vielleicht kann man sich noch an den ungefähren Namen einer gesuchten Methode erinnern, für eine exakte Suche reicht es aber nicht. Die aus Visual Studio 2012 schon bekannte Funktion Navigate To (STRG + ,) bietet hier Abhilfe (Kasten: „Suchmöglichkeiten bei Navigate To“).

Suchmöglichkeiten bei Navigate To
  • Es werden Symbole, Datei- und Pfadnamen durchsucht.
  • Gibt man nur Kleinbuchstaben ein, wird unabhängig von Groß- und Kleinschreibung gesucht („readfile“ findet z. B. „ReadFile“ und „Readfile“).
  • Gibt man Klein- und Großbuchstaben ein, wird bei Symbolen genau nach der angegebenen Schreibweise gesucht („ReadFile“ findet z. B. „Readfile“ nicht).
  • Dateinamen werden immer ohne Rücksicht auf Groß- und Kleinschreibung durchsucht.
  • Gibt man mehrere, durch Leerzeichen getrennte Wörter ein, werden diese mit „und“ verknüpft („read file“ findet z. B. „ReadTextFile“ und „ReadBinaryFile“, nicht aber „ReadString“).
  • Ein vorangestelltes @-Zeichen unterdrückt die Suche nach Datei- und Pfadnamen, die Trefferliste enthält nur Symbole.

Auf den ersten Blick hat sich in Visual Studio 2013 nicht viel bei dieser Funktion geändert. Es fällt auf, dass es sich nicht mehr um einen modalen Dialog handelt, sondern das Suchfeld direkt im Codefenster angezeigt wird (Abb. 9). Diese Änderung bringt die große Verbesserung mit sich, dass bei der Navigation in der Trefferliste mit den Cursortasten oder bei einem einfachen Mausklick nur eine Vorschau des ausgewählten Elements angezeigt wird. Ist dieses nicht das Gesuchte, kann man die Trefferliste weiter durchsuchen, ohne wie früher das Navigate-To-Fenster schließen zu müssen. Findet man das gesuchte Element nicht, bringt einen die ESC-Taste wieder zurück zur ursprünglichen Position im Code.

Abb. 9: Neues Erscheinungsbild von Navigate To

XAML IntelliSense und Go To Definition (F12)

Dieser Artikel ist den C#-bezogenen Neuerungen in Visual Studio 2013 gewidmet. In anderen Bereichen wie JavaScript, C++, HTML, CSS etc. gäbe es ebenfalls viel zu berichten, das würde jedoch den Rahmen sprengen. Zwei neue Funktionen in XAML sollen allerdings nicht unerwähnt bleiben, da sie eng mit C# zusammenhängen und lange herbeigesehnt wurden: IntelliSense in Data-Binding-Ausdrücken und die Go-To-Definition von XAML in den C#-Code.

Diese beiden neuen Funktionen erleichtern die Arbeit mit XAML in Verbindung mit C# ViewModels enorm. IntelliSense verhindert Tippfehler und spart dadurch viel Zeit, die man mit dem Debuggen von Binding-Fehlern verbringen müsste. Go To Definition ist ungemein hilfreich, um direkt zur jeweiligen C#-Implementierung zu springen (Abb. 10). Die zuvor erwähnte Peek-Definition-Funktion (ALT + F12) wird leider in XAML noch nicht unterstützt.

Abb. 10: Mit Go To Definition von XAML ins C# ViewModel springen

Abbildung 11 zeigt IntelliSense beispielhaft für ein C# ViewModel. Achten Sie beim XAML-Code darauf, wie im Window-Wurzelelement der XAML-Datei ein DataContext angegeben wird, den Visual Studio zur Entwicklungszeit verwenden soll. Dabei kann es sich um den DataContext der echten Anwendung handeln. Wenn dieser jedoch eine komplexe Infrastruktur voraussetzt, die zur Entwicklungszeit nicht zur Verfügung steht, kann man auch einen eigenen DataContext schreiben, der von IntelliSense und den XAML-Design-Tools genutzt wird.

Abb. 11: IntelliSense in XAML mit Design Time ViewModel in C#

Lust auf mehr?

Wie schon in der Vergangenheit üblich, bietet Microsoft mit den Productivity-Power-Tools auch für Visual Studio 2013 weitere Funktionen, die es (noch) nicht in die produktive Version geschafft haben. Sie können die Power-Tools hier herunterladen. Dort finden Sie auch eine genaue Beschreibung der von ihnen gebotenen Funktionen.

Fazit

Visual Studio 2012 hat mit den neuen C#-Schlüsselwörtern async und await einen großen Umbruch für C#-Entwickler gebracht. Die Version 2013 bringt keine derart fundamentalen Umwälzungen. Hier liegt der Fokus auf Weiterentwicklungen im Bereich der IDE, der visuellen sowie textbasierten Editoren und dem Debugging.

Betrachtet man jedoch das größere Bild, erkennt man, dass Microsoft durch den Produktivstart von Visual Studio Online doch wieder einen großen Schritt gemacht hat. Ein professionelles System für Quellcodeverwaltung, Projektmanagement, automatisierte Builds und mehr steht heute selbst kleinen Teams binnen weniger Minuten zur Verfügung. Die Cloud macht also auch vor Visual Studio nicht Halt. Inwieweit Entwickler speziell in Europa bereit sind, Code außer Haus zu verwalten, bleibt abzuwarten. Hier muss zwischen den unschlagbar niedrigen Betriebskosten in der Cloud und der Kontrolle durch lokal verfügbare Server abgewogen werden.

Wenn Sie dieser Artikel neugierig gemacht hat, Sie aber auf Ihrer produktiven Entwicklermaschine noch kein neues Visual Studio installieren können, ist eine virtuelle Maschine in Windows Azure vielleicht eine Option. Seit Kurzem bietet Microsoft jedem MSDN-Abonnenten ohne zusätzliche Lizenzkosten eine vorkonfigurierte virtuelle Maschine in Windows Azure. Man meldet sich mit seinem Microsoft-Account an und die VM prüft, ob dafür ein gültiges Abonnement existiert. Sie bezahlen nur für die Zeit, die Ihre VM in Azure aktiv ist. Nähere Informationen zu diesem Angebot, das speziell zum Evaluieren von Visual Studio interessant ist, finden Sie hier.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -