Visual Studio 2013 im Einsatz

Nun  sind einige Tage vergangen, seit ich das neue VS installiert habe. Zeit, ein kleines Resumé anzustellen, denn es ist nicht alles unbedingt Gold, was da glänzt, was vor allem daran liegen könnte, dass noch kein öffentliches Release vorliegt und die Tool-Hersteller nicht alle nachgezogen haben.

Screencast

Grundlegendes

Zunächst einmal vielleicht ein paar grundlegende Erfahrungswerte zum Einsatz des neuen VS. Ein dickes Plus gebe ich für die Performance. Gefühlt wurden hier viele Stellschrauben nochmal angezogen. Der Start ist 1-2 Sekunden schneller, als beim 2012 und das war ja nicht langsam. Kompliment also hier.

Was auch ganz nett gemacht ist, ist die Verknüpfung mit einer Live-ID. Man muss das Studio ja nicht zwangsläuig mit einem Online-Account verbinden. Nett ist das aber schon, gerade, wenn man – wie ich – mit mehreren Rechnern arbeitet. Einige der Einstellungen des Studios werden hier über die Live-ID synchronisiert. Welche das genau sind, konnte ich noch nicht definitiv in Erfahrung bringen. So richtig sinnvoll wäre es z.B., die Debugger-Einstellungen synchron zu halten. Weniger logisch würde sich i.d.R. die Synchronisation der Bildschirmaufteilung verhalten, weil ich auf meinem Notebook ganz andere Auflösungen fahre. Hier muss ich irgendwie noch tiefer ermitteln.

Extensions

Das neue VS hat ja einen neuen Bereich für Benachrichtigungen eingeführt (Notifications):

Abb. 1: Notification Centre
Abb. 1: Notification Centre

Verwundert bin ich nach ein paar Tagen darüber gewesen, dass einfach keine Updates erscheinen wollten. Na gut, das neue Studio ist noch nicht offiziell draußen, aber auf der anderen Seite haben eigentlich gerade zu Beginn der MSDN-Phase immer alle Lieferanten fleißig gepatched. Ein Erleuchtung stellte sich bei mir dann ein, als ich meine eigene Extension TFS WorkItemViewer an das neue Studio anpassen wollte. Eigentlich ändert man dazu nur eine Versions-Einstellungen in der Manuifest-Datei der Extension und los gehts. Blöd nur, dass es hier offensichtlich einen breaking change in der API gegeben hat. Letztlich führte das dazu, dass ich meine Extension in 2 Versionen anbieten musste (wie übrigens andere auch: z.B. VS Commands). Das erklärt schon mal die ruhige Flagge des Notification-Bereichs.

Editor

Der Editor ist (zumindest in der von mir getesteten Ultimate) schon ein Sahne-Schnittchen. Dinge, wie CodeLense und Peek Definition sind echte Bringer (siehe Screencast). Der Editor ist und bleibt eines der wichtigsten Argumente für den Einsatz des VS. Das wird vor allem den Leuten bewusst sein, die mal zur Konkurrenz wechseln müssen.

Team Explorer

Auch hier möchte ich eher auf den Screencast verweisen, da die Zusammenhänge des Team Explorer am besten in Bewegung gezeigt werden. Auch ist hier (wie immer) wichtig, dass man eine kastrierte Version bekommt, wenn man sich nicht gegen einen gleich-versionierten TFS verbindet. Es funktioniert zwar, alles ist aber nicht dabei.

Tooling

Eigentlich gehören die Tools, wie Entity Framework oder ASP.NET MVC ja gar nicht zum Visual Studio. Ohne diese werden aber auf der anderen Seite kaum noch Projekte gemacht. Ich habe mich mal auf die Tools meiner täglichen Arbeit konzentriert. Detaillierte Artikel sollten hier natürlich später folgen.

Entity Framework

Endlich macht async/await wirklich Sinn, denn ich kann es bis zur Datenbank durchreichen! Gleich beim Generieren des Modells fragt der Designer artig nach, welches Framework ich nutzen möchte:

Abb. 2: EF auswählen
Abb. 2: EF auswählen

Interessanter ist aber eigentlich, wie man ein bestehendes Projekt auf EF 6 „hochhievt“. Bereits im VS 2012 wird ja EF als Nuget-Package geliefert. Es ist also am naheliegensten hier ein Update zu versuchen.  Das ging ein paar mal mit einer Timeout-Meldung schief (kann aber auch an Nuget gelegen haben). Danach standen die Async-Methoden auch artig zur Verfügung. Das heißt, einfach Update von EF 5 auf 6 per Nuget und dann einen Build und gut. Das ist gut!

So richtig neu ist aber eine Eigenschaft des DbContext. Die dortige Eigenschaft „Database“ hat wiederum eine, die „Log“ heißt und vom Typ Action<string> ist. Das ermöglicht folgendes:

Abb. 3: Logging in EF
Abb. 3: Logging in EF

Na endlich! Hier können nun auch Tools, wie NLog oder vielleicht auch Trace.WriteLine andocken! Und es wird nicht nur das Kommando geschrieben, sondern auch die Abfragezeit! Cool!!!

ASP.NET MVC 5

Gleich beim Erstellen eines neuen Projektes wird deutlich, dass sich einiges im neuen MVC getan hat:

Abb. 4: Neuer Dialog in MVC
Abb. 4: Neuer Dialog in MVC

Dem Bereich der Authentifizierung wurde ein größerer Raum eingeräumt, was angesichts der wirren Klassen und Konfigurationen innerhalb dieses Areals wohl keine schlechte Idee ist. Auf die Templates möchte ich hier noch nicht speziell eingehen, sondern eher auf das Standard-Ergebnis einer MVC-Application.

Ein guter Einstieg ist vielleicht die packages.config im neuen Projekt vom Typ „MVC“:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="bootstrap" version="3.0.0" targetFramework="net45" />
  <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
  <package id="jQuery" version="1.10.2" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.Core" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.EntityFramework" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.Owin" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Cookies" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Facebook" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Google" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.MicrosoftAccount" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.OAuth" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Twitter" version="2.0.0" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
  <package id="Respond" version="1.2.0" targetFramework="net45" />
  <package id="WebGrease" version="1.5.2" targetFramework="net45" />
</packages>

Als standardmäßiges Layout-Tool, das sich auch um Responsiveness kümmert, kommt nun Twitters bootstrap zum Einsatz (übrigens ein eher unglücklicher Titel für ein Layouting). Direkteste Folge davon ist eine neue Version der _Layout.cshtml, die nun natürlich die CSS-Klassen aus diesem Framework nutzt. EF kommt nun standardmäßig in Version 6 und Respond ist als Ergänzung für modernizr mit an Bord.

Die Einarbeitung in bootstrap wird wohl am meisten Umgewöhnung erfordern, ist aber wirklich nicht schwer. Ebenso leicht fällt nach wie vor die Umstellung auf andere Frameworks, wie Zurb Foundation.

Die Anzahl der Packages ist gottlob gesunken und noch viel wichtiger: die unsäglichen DotNetOpenAuth*-Kameraden sind endlich verschwunden. Stattdessen sind nun Microsoft.AspNet.Identity.* und Microsoft.Owin.* am Start, was insgesamt leichtgewichtiger und besser wartbar erscheint. Praxistests hierzu stehen natürlich noch aus.

Man sollte hier immer im Hinterkopf behalten, dass die Ausprägung bei einer anderen Auswahl im Dialog aus Abb. 4 jeweils anders ausfällt!

Web Essentials

Anders, als eigentlich mal angekündigt, gibt’s die Essentials von Mads Kristensen doch noch für das neue Studio. Eigentlich war ja mal im Gerede, dass die Tools komplett ins VS wandern. Bestimmte Teile davon haben es auch geschafft, so z.B. die Unterstützung für Less-Dateien. Solche Themen, wie Zen-Coding kommen erst über die Erweiterung.

Überarbeitung des Add-New-Item-Dialoges

Es gibt nun wesentlich mehr InBuild-Möglichkeiten der Erstellung von Elementen, die man früher per Hand erzeugen musste. Innerhalb des Add-New-Item-Dialoges sind dazu unterhalb von Web zunächstmal eine ganze Reihe von Gruppen dazu gekommen:

Abb. 6: Add-New-Item
Abb. 6: Add-New-Item

Sehen wir uns z.B. Singal R einmal an:

Abb. 7: Elemente in SignalR
Abb. 7: Elemente in SignalR

Zunächst einmal schön, dass SignalR nun ein First-Class-Citizen ist. Der hier erzeugte Code dürfte vor allem aber Neueinsteigern die Arbeit extrem erleichtern:

public class MyHub1 : Hub
{
    public void Hello()
    {
        Clients.All.hello();
    }
}

Auch dazu gekommen sind z.B. CoffeeScript-Vorlagen und weitere werden nicht lange auf sich warten lassen (knockout wird wohl der nächste sein, wenn ich raten soll).

Xamarin

Hierzu gibt es derzeit eigentlich nur zu sagen, dass mit Stand dieses Artikels keine offizielle Unterstützung für VS 2013 vorhanden ist. Schade! Vor allem wichtig: Alle, die Xamarin benötigen, sollten darauf achten, VS 2012 zu behalten.

Fazit

Das 2013er ist rund und wenn irgendwo was hakt, dann liegt es wohl eher an den Tool-Lieferanten und meiner eigenen Ungeduld. Die Frage, ob sich ein Upgrade lohnt, ist schwer zu beantworten und hängt neben den persönlichen Vorlieben vor allem davon ab, ob

  • man sich als Edge-User versteht und es einfach wissen will
  • man Features von TFS 2013 benutzen möchte
  • man sowieso ein Upgrade von 2010 plant und daher 2012 überspringen kann
  • man Zeit hat, sich mit der Update-Orgie auf allen möglichen Systemen zu befassen
  • man überhaupt weiß, was man will

Letztlich warte ich nur drauf, dass Xamarin aus der Hüfte kommt und dann fliegt das 2012 vom System.

Auf einige Themen bin ich übrigens gar nicht eingegangen, weil ich sie einfach noch nicht ausreichend testen konnte. Dazu zählt auch Browserlink!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.