Featureüberblick über Microsofts neue IDE

Visual Studio 2015: Ausblick auf die spannendsten Neuerungen
Kommentare

Die nächste Generation von Visual Studio steht in den Startlöchern und liefert viele Neuerungen und Verbesserungen. Es lohnt sich, sie genauer zu betrachten.

Am 23. Februar dieses Jahres wurde die mittlerweile sechste CTP-Version von Visual Studio 2015 von Microsoft veröffentlicht. Einen genauen Releasetermin hat Microsoft zwar noch nicht bekanntgegeben, die Planung sieht allerdings das zweite oder dritte Quartal 2015 vor. Gespannt sein darf man insbesondere auf die neue Compilerplattform „Roslyn“. Sie ermöglicht es dem Entwickler, selbst in den Compile-Vorgang einzugreifen und eigene Erweiterungen und Anpassungen zu entwickeln. Viele der im Artikel vorgestellten Features basieren auf den Möglichkeiten, die Roslyn momentan bietet.

Die aktuelle CTP von Visual Studio 2015 lässt sich herunterladen. Da es sich um eine vorläufige Version handelt, ist von einem produktiven Einsatz abzuraten. Die hier vorgestellten Features basieren auf der Preview, es können sich also durchaus noch Änderungen ergeben.

.NET Framework 4.6

Mit .NET Framework 4.6 erscheint eine neue Version des .NET Frameworks. Die wichtigsten Änderungen, Neuheiten und Verbesserungen sind:

  • Es wurde ein neuer 64-Bit-JIT-Compiler (RyuJIT) eingeführt. Er soll die Performanz des aktuellen Compilers deutlich verbessern. Beachten sollte man dabei allerdings, dass der Compiler für 64 Bit standardmäßig aktiviert ist und es dadurch passieren kann, dass sich das Programmverhalten im Vergleich zum alten Compiler ändert. Ein Umschalten ist möglich, allerdings umständlich.
  • Die Anzeige bei einer hohen DPI-Zahl wurde für einige Controls (z. B. DataGridView, ComboBox und NumericUpDown) verbessert. Dieses Feature muss allerdings manuell über App.config aktiviert werden.
  • Es wurden einige Änderungen an der Base Class Library (BCL) vorgenommen. Die Properties CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture sind nun auch schreibbar. Daneben besteht bei besonders kritischen Codeblöcken die Möglichkeit, den GarbageCollector zu „sperren“, sodass er während diesem Block nicht läuft. Des Weiteren wurden einige neue Typen von Collections hinzugefügt (IReadOnlyCollection<T>, Queue<T> und Stack<T>).

C#- und Visual-Basic-Sprachfeatures

Neben der neuen Version des .NET Frameworks erscheinen auch die zwei wohl wichtigsten .NET-Sprachen in einer neuen Version: C# 6 und Visual Basic 14. Die Änderungen in beiden Sprachen sind nicht grundlegend. Es sind vor allem kleine Verbesserungen – auch Syntactic Sugar genannt –, die das Entwickeln etwas erleichtern sollen.

Es sind aber durchaus auch einige interessante Neuerungen dabei, die im Folgenden in Kürze dargestellt werden. An dieser Stelle sei nochmals erwähnt, dass die Angaben auf der Preview-Version beruhen und zum Teil keinen finalen Status haben. Das bedeutet, dass es bis zum finalen Release noch Änderungen geben kann.

Exception Filter: Eine kleine, aber praktische Neuerung (zumindest für C#; in Visual Basic existieren diese bereits schon länger) sind die Exception-Filter. Mit ihrer Hilfe lassen sich Bedingungen für einen Catch-Block definieren (Listing 1). Häufig findet man auch die Syntax mit „if“ anstelle von „when“. In der aktuellen Preview funktioniert allerdings nur die „when“-Variante.

Listing 1
try
{
...
}
catch (SqlException e)
when (e.Number == 4711)
 {
  }

Using mit statischen Klassen: Die neue C#-Version erlaubt es jetzt auch, neben Namespaces statische Klassen mittels „Using“ zu importieren (Listing 2).

Listing 2
using System.Console;

public static main (string[] args)
{
  WriteLine(“New School of IT”);
}

String-Interpolation: Die String-Interpolation ermöglicht es, Strings zu formatieren, ähnlich wie dies bis dato über die String.Format-Methode möglich ist. Ein kleines Beispiel hierzu findet sich in Listing 3. Auf diese Weise lassen sich die Strings einfach formatieren.

Listing 3
var name = "Björn";
var lastName = "Dreher";
string result = $"{lastName}, {name}";
// Ausgabe: Dreher, Björn

Auto-Property-Initializer: Auto-Properties lassen sich jetzt direkt bei der Deklaration mit einem initialen Wert versehen.

public string Name { get; set; } = "Björn Dreher"
public List<T> Collection { get; } = new List<T>();

Null-Propagation-Operator: Durch den Null-Propagation-Operator lassen sich die manchmal etwas lästigen Überprüfungen auf null vereinfachen.

var name = customers?[1]?.Name;

Die Methoden, die nach dem ?-Operator zum Einsatz kommen, werden nur ausgewertet, wenn sie nicht null sind.

Die hier erwähnten Neuerungen sind nur ein kleiner Ausschnitt. Eine komplette Übersicht kann online eingesehen werden.

Cross-Plattform-Entwicklung

Microsoft fokussiert sich recht stark auf die Cross-Plattform-Entwicklung, also die Entwicklung von mobilen Anwendungen für verschiedene Plattformen wie iOS und vor allem Android. Hier kommt das Apache-Cordova-Projekt ins Spiel. Das Open-Source-Framework ermöglicht es, native Anwendungen für Android, iOS, Windows Phone, aber auch für Amazon Fire OS, BlackBerry und noch einige weitere Plattformen zu erstellen. Apache Cordova ermöglicht die Entwicklung von nativen Anwendungen mittels HTML, CSS und JavaScript. Der Zugriff auf gerätespezifische Funktionen wie beispielsweise SMS, Kamera oder GPS erfolgt über spezielle JavaScript-Bibliotheken, die somit von der eigentlichen Logik abstrahieren und den Benutzer davon befreien, plattformspezifischen Code zu entwickeln. Da die Oberflächen auf HTML und CSS basieren, ist auch hier Plattformunabhängigkeit gegeben.

Mit Visual Studio 2015 hält auch Apache Cordova Einzug in die neueste Version der IDE. Die „Tools für Apache Cordova“ sind nun direkt in Visual Studio integriert und stellen dem Entwickler einen neuen Projekttyp für Apache-Cordova-Applikationen bereit. Damit werden auch alle dem Entwickler liebgewonnenen Features, wie beispielsweise Syntax-Highlighting und IntelliSense, zur Verfügung gestellt. Das betrifft sowohl den JavaScript-Code als auch den HTML- und CSS-Code. Des Weiteren bietet Visual Studio die volle Unterstützung, angefangen beim Debugging bis hin zum Testen mittels Emulatoren. Dadurch lässt sich die komplette Entwicklung mit Visual Studio durchführen, und man muss nicht auf andere Tools zurückgreifen.

Eine kleine Einschränkung sei an dieser Stelle erwähnt: Eine Besonderheit besteht bei der Entwicklung von Applikationen für iOS. Diese lassen sich nicht auf einem Windows-System kompilieren. Denn zum Entwickeln ist XCode, die Entwicklungsumgebung für iOS, notwendig. Diese ist allerdings nur für Mac OS X verfügbar. Ohne ein Apple-Gerät mit Mac OS X lässt sich eine Applikation weder kompilieren noch auf dem Gerät ausrollen. Allerdings unterstützt Visual Studio auch hier. Die Entwicklungsumgebung liefert einen Remote-Agenten, der auf einem Mac-OS-X-System installiert werden kann. Visual Studio kann die Applikation mithilfe des Remote-Agenten direkt auf dem Mac-OS-X-System kompilieren.

Auf einem Bein kann man bekanntlich nicht gut stehen. Deshalb kommt mit Visual Studio 2015 noch ein weiteres Framework zur Entwicklung von Cross-Plattform-Applikationen zum Einsatz: Xamarin. Das Framework basiert auf dem Open-Source-Framework Mono und wird von der gleichnamigen Firma seit der Einstellung des Mono-Projekts 2011 entwickelt. Ebenso wie Apache Cordova dient es dazu, native Applikationen für die unterschiedlichen Plattformen mit möglichst wenig plattformspezifischem Code zu entwickeln. Der wahrscheinlich größte Unterschied zwischen den beiden Frameworks liegt in dem UI. Durch den Einsatz von HTML und CSS ist Apache Cordova plattformunabhängig. Der Nachteil dieser Variante liegt allerdings darin, dass die Oberflächen nicht dem Look-and-feel der jeweiligen Plattform entsprechen. Das ist bei Xamarin anders. Die UI-Elemente werden auf die jeweiligen Pendants der Plattformen gemappt und passen sich daher dem Look-and-feel der Plattform an.

Mit der neuesten Version von Visual Studio lässt sich Xamarin bei Bedarf direkt mit installieren. Dadurch bekommt man die volle Unterstützung für die Entwicklung – angefangen bei den entsprechenden Projekttypen, über die Debugging-Funktionalität bis hin zu Emulatoren. Zu beachten ist dabei allerdings, dass zum Entwickeln ein Xamarin-Konto vorhanden sein muss.

Im Zuge der Verbesserungen für die Cross-Plattform-Entwicklung hat Microsoft auch einen neuen Emulator für Android entwickelt, der mit Visual Studio 2015 ausgeliefert wird. Bei den bereits existierenden Emulatoren für Android gab es zwei Probleme: Entweder waren sie sehr langsam und unproduktiv oder sie standen in Konflikt mit Hyper-V. Hyper-V wiederum ist für den Windows-Phone-Emulator notwendig, was im Zweifel dazu führt, das Hyper-V ständig an- bzw. wieder usgeschaltet werden muss, wenn man für beide Plattformen entwickeln möchte. Und genau diese Probleme behebt der neue Emulator von Microsoft. Er ist schnell und nutzt ebenfalls Hyper-V. Aus diesem Grund kann er allerdings nur ab Windows 8 aufwärts verwendet werden. Er kann dabei sowohl von Xamarin-Projekten als auch von Apache-Cordova-Projekten verwendet werden. Durch den Emulator lassen sich zahlreiche Zustände des Android-Geräts simulieren: GPS-Position, Beschleunigung. Rotation, Batteriezustand, Kamera und Multi-Touch-Unterstützung.

Smart Unit Test

Ein weitere interessante Neuerung sind die Smart Unit Tests. Sie sind keine komplette Neuentwicklung, sondern existieren schon etwas länger und wurden von Microsoft Research unter dem Namen Pex entwickelt. Jetzt halten sie unter neuem Namen Einzug in Visual Studio.

Die Smart Unit Tests unterstützen den Entwickler dabei, Unit Tests zu erstellen. Sie generieren aus bestehendem Code passende Unit Tests. Passend heißt, die Smart Unit Tests versuchen für jeden Pfad im Code einen Testfall zu generieren und dann für diesen Pfad die entsprechenden Parameter zu definieren. Auf diese Weise lässt sich eine hohe Code-Coverage erzielen. Als Beispiel sei eine simple Methode zum Dividieren zweier Zahlen gegeben (Listing 4). Wendet man die Smart Unit Tests auf diese Methode an, ergeben sich insgesamt drei Testfälle (Abb. 1).

Listing 4
        public double Divide(int a, int b)
        {
            return a / b;
        }
Abb. 1: Ergebnis der Smart Unit Tests

Abb. 1: Ergebnis der Smart Unit Tests

Das Ergebnis ist durchaus gut und entspricht den Erwartungen. Vielleicht übertrifft es sogar die Erwartungen, denn den Testfall int.MinValue / – 1 hätten vermutlich nur wenige bedacht.

Die Unit Tests lassen sich jederzeit dynamisch erstellen und direkt ausführen. Es besteht auch die Möglichkeit, sie zu speichern. In Visual Studio wird dann ein eigenes Projekt mit den Testfällen definiert, die dann bei Bedarf ausgeführt werden.

Die Smart Unit Tests können den Entwickler also dabei unterstützen, die Unit Tests zu erstellen. Aber man darf sich an dieser Stelle auch keine falschen Illusionen machen. Die Smart Unit Tests befreien den Entwickler nicht davon, sich selbst noch mit Unit Tests zu beschäftigen. Zum einen testen sie, was die Methode macht, aber nicht, was sie tun soll. Als triviales Beispiel sei hier eine Methode genannt, die mithilfe des Satzes des Pythagoras die Länge der Hypotenuse eines rechtwinkligen Dreiecks berechnen soll, aber die Längen der anderen Seiten nicht quadriert. Die Smart Unit Tests würden hier keinen Fehler erkennen und man könnte zu dem Fehlschluss kommen, es sei alles in Ordnung. Ein weiterer Nachteil zeigt sich, wenn man in dem Beispiel von oben anstelle von integer „double“ verwendet. Dann erkennen die Smart Unit Tests nur noch einen Testfall. Die Division durch null wird nicht mehr erkannt, obwohl es sich durchaus noch um einen interessanten Testfall handelt, auch wenn in diesem Fall keine Exception geworfen wird.

ASP.NET 5

Mit der neuen Version von Visual Studio wird gleichzeitig auch die neue Version von ASP.NET 5 (Codename: ASP.NET vNext) erscheinen. Dieses Release macht dem Codenamen alle Ehre. Die neueste Version von ASP.NET ist wohl das Release mit den größten und fundamentalsten Änderungen seit dem initialen Release. Die Architektur wurde komplett erneuert und alte Zöpfe wurden abgeschnitten.

Die alte Version von ASP.NET basiert und stützt sich auf .NET – das Framework. Dies bringt allerdings einige Nachteile mit sich. Zum einen ist es notwendig, das .NET Framework vollständig zu installieren, obwohl nur ein kleiner Teil davon wirklich benötigt wird. Zum anderen, insbesondere dann, wenn mehrere verschiedene Webapplikationen auf dem gleichen Server laufen, kann es zu Problemen beim Upgrade des .NET Frameworks kommen. Um diese Probleme zu beheben, wurde eine neue .NET-Framework-Version mit dem Namen .NET Core erstellt. Dabei handelt es sich um eine optimierte Version des Frameworks, auf der ASP.NET 5 aufbaut. Sie verwendet dieselbe Codebasis wie das .NET Framework. Ein großer Vorteil ist, dass sie komplett modular aufgebaut ist. Sie lässt sich ganz einfach mit der Anwendung ausliefern und läuft komplett unabhängig von etwaigen anderen ASP.NET-Versionen („Side-by-Side“). Ein späteres Update der Version tangiert die anderen bestehenden Anwendungen deshalb nicht mehr. Aktuell ist .NET Core lediglich auf Windows-Systemen lauffähig. Aber in Zukunft soll auch eine Unterstützung von Linux und Mac OS X dazukommen.

Ein weiteres kleines Feature, das den modularen Ansatz unterstreicht, ist die Möglichkeit, die Abhängigkeit über NuGet-Packages zu definieren. Neben dem gewohnten Weg über den Package Manager, lässt sich die Konfiguration auch per JSON in der project.json-Datei erstellen.

Die grundlegende Änderung in der Architektur betrifft die Features MVC, Web API und Web Pages. Diese drei Frameworks bieten eine ähnliche Funktionalität, waren aber von der Entwicklung relativ unabhängig voneinander. Da dies zu Codeduplikation und Inkonsistenzen führte, hat sich Microsoft entschieden, hier einen Schnitt zu machen und die drei Features zu einem Framework zusammenzuführen: MVC 6.

Daneben existieren noch einige weitere interessante Neuerungen, die an dieser Stelle nur kurz erwähnt sind: Verbesserung der Dependency Injection, Unterstützung zum Deployment in die Cloud, Verbesserung der HTTP-Performanz.

Änderungen an der IDE

Die neue Version von Visual Studio beinhaltet viele kleineren Neuerungen und Verbesserungen, die vor allem darauf abzielen, das Entwicklerleben etwas schöner zu gestalten. Bei vielen dieser Änderungen hat die neue Compiler-Plattform ihre Finger mit im Spiel. Im Folgendem sind die wichtigsten oder interessantesten Änderungen kurz genannt.

Einführung der Quick Actions: Quick Actions (auch Light Bulb genannt) erscheinen bei Fehlern oder Refactoring-Möglichkeiten. Sie ermöglichen es, die empfohlene Aktion direkt auszuführen. Solche Aktionen können beispielsweise „fehlenden Namespace hinzufügen“ oder „Interface implementieren“ sein.

Verschönerung der Tooltipps: Die Ansicht wurde deutlich verschönert. Die Tooltipps sind nun farblich dargestellt und verwenden auch Syntax-Highlighting.

Verbesserung und Erweiterung des Refactorings: Für C# wurde das Refactoring um die Funktionen inline temporary variable und introduce local erweitert. inline temporary variable ersetzt, wie der Name schon erahnen lässt, temporäre Variablen durch den konkreten Ausdruck. Daneben wurden nun die Refactoring-Möglichkeiten, die schon bei C# existieren, für Visual Basic nachgezogen. introduce local speichert einen Ausdruck bzw. das Ergebnis einer Methode in einer lokalen Variablen.

Erweiterung der Renaming-Funktion: Diese Funktion gehört eigentlich auch noch zu der Erweiterung des Refactorings. Da dies aber wahrscheinlich die am häufigsten genutzte Funktion ist und die Änderungen hier auch recht umfassend sind, verdient sie einen eigenen Punkt. Die Renaming-Funktion wurde komplett überarbeitet. Das alte Renaming-Windows wurde entfernt, und das Renaming lässt sich jetzt komfortabler direkt per Shortcut durchführen. Durch Drücken von F2 (im C#-Editor) lässt sich einfach der Name ändern, per Enter lassen sich die Änderungen übernehmen. Weiterhin lassen sich darüber auch Konflikte (z. B. gleicher Variablenname) direkt lösen.

Lambda Expressions im Debugger-Window: Bisher war es nicht möglich, Lambda Expressions im Debugger zu verwenden. Das wurde jetzt mit der neuen Version behoben.

Erweiterung der Edit-and-Continue-Möglichkeiten: Die praktische Funktion Edit-and-Continue erlaubt es, Code zur Debug-Zeit zu verändern, ohne dass ein Neustart erforderlich ist. Die Funktion wurde jetzt um einige Möglichkeiten erweitert. Nun ist es auch möglich, Felder, Properties und Methoden hinzuzufügen. Das Löschen einer Property oder einer Methode ist dagegen weiterhin nicht möglich. Eine weitere Einschränkung ist, dass Lambda Expressions das Edit-and-Continue unterbinden. Diese Einschränkung besteht in der aktuellen CTP weiterhin. Allerdings wird daran noch gearbeitet, in der Hoffnung, dass dies noch für die finale Version behoben wird.

Verwalten von Windows-Layouts: Die Anordnungen der verschiedenen Fenster lassen sich jetzt in der neuen Version abspeichern. Man hat die Möglichkeit, bis zu neun verschiedene Anordnungen abzuspeichern und per Shortcut direkt zu diesen zu wechseln. Das macht es insbesondere für Entwickler interessant, die mit verschiedenen Bildschirmen arbeiten. Am Schreibtisch, an dem man möglicherweise mit zwei 23-Zoll-Monitoren arbeitet, möchte man vielleicht eine andere Fensteranordnung als auf einem Surface verwenden.

Editionen

Mit der neuen Version ändern sich das Lizenzierungsmodell und der Preis. Zur Abwechslung die gute Nachricht zuerst: Es wird insgesamt günstiger. Zukünftig wird es nur noch drei Editionen geben: Community, Professional und Enterprise. Die Community Edition ist frei verfügbar und darf auch, im Gegensatz zu der Express Edition, im kommerziellen Bereich verwendet werden. Die Verwendung ist dann auf Unternehmen mit weniger als 250 Mitarbeitern und einem Umsatz von weniger als 1 Million US-Dollar beschränkt. Des Weiteren dürfen in diesem Unternehmen auch nicht mehr als fünf Entwickler Visual Studio verwenden. Die Professional Edition wird so in dieser Form erhalten bleiben. Die Premium und die Ultimate Edition werden dagegen zur Enterprise Edition vereinigt. Wer aktuell eine Premium Edition besitzt, wird somit automatisch auf die Enterprise Edition „hochgestuft“.

Der Preis für die Professional Edition wird bei 1 199 US-Dollar und für die Enterprise Edition bei 5 999 US-Dollar liegen. Zum Vergleich: Die Ultimate Edition schlug bis dato mit 13 000 US-Dollar zu Buche.

Ausblick und Fazit

Die hier vorgestellten Features von Visual Studio 2015 sind bei Weitem nicht vollständig. Sie geben nur einen kleinen Ausblick auf die wichtigsten oder interessanten Funktionen. So wird nun auch eine neuere Version von C++ unterstützt, es wurden weitere Verbesserungen für C++-Entwickler eingeführt, Neuerungen am Entity Framework, Überarbeitung und Verbesserungen von Editoren (XAML, JavaScript, HTML/CSS), Einführung von Code Maps usw. Die Liste ließe sich noch beliebig weiterführen. Aufgrund der vielen Neuerungen ist Visual Studio 2015 kein kleines Release.

Die vielleicht größte Änderung ist zum einen der neue Compiler Roslyn. Auf den ersten Blick hat Roslyn auf den Entwickler vielleicht nicht direkt die großen Auswirkungen. Seine volle Stärke wird sich erst im Laufe der Zeit zeigen. Ein wichtiges Ziel Roslyns ist es, einfachere und schnellere Entwicklungszyklen zu erlauben. Ob sich das auch so auszahlen wird, muss man sehen.

Die zweite größte Neuerung scheint die von Microsoft fokussierte Cross-Plattform-Entwicklung zu sein; sowohl durch die Unterstützung von Xamarin als auch die von Apache Cordova. Das macht auch Sinn, da der mobile Markt einen immer wichtigeren Teil einnimmt und sich die Verbreitung von Windows Phone gleichzeitig noch im niedrigen Prozentbereich befindet.

Als Letztes sei an dieser Stelle die Umgestaltung der Lizenzierung erwähnt. Diese bringt sowohl für die großen Entwicklungsteams als auch für die kleinen Teams Vorteile.

Weitere Informationen

Visual Studio 2015
.Net 2015

Aufmacherbild: Retro styled Businessman climbing above the clouds via Shutterstock-com / Urheberrecht: jorgen mcleman

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -