Visual Studio 2015 has some new features for developers. This raises the question: Which of the new features will help making my life as developer easier? And which features could be left out?
Visual Studio 2015 has no “Killer”-Feature
In this post I would like to tell you about the new features of Visual Studio 2015 and how they will make my work as a developer a little bit easier. It should be said that the new version of Visual Studio does not contain that one new big feature everyone was waiting for. Although Visual Studio 2015 is using the new and faster Roslyn compiler without which some features would not be possible at all, this is in many cases not directly visible and therefore noticeable for the end user. On the other hand lots of small changes there have been made which will make the work with Visual Studio and Blend a lot simpler.
Intuitive use of breakpoints
I would like to start with the possibility of defining conditions for breakpoints. The functionality has not changed much, since I was already able to define conditions in the previous version. However, this can now be done by hovering over the breakpoint instead of right clicking to open a new dialog. Although it is not much of a change, it feels easier and more intuitive than before.
Another change concerning breakpoints can be found when debugging. When a program stops at a breakpoint, Visual Studio displays the elapsed time since the last breakpoint. This can be very helpful for smaller performance questions because I can easily see where the most time was spent without starting an entire performance analysis.
Code Editor revised
Moreover, the information of the CodeLens feature will be shown in the code editor. CodeLens already existed in Visual Studio 2013 but was only available in the Ultimate Edition. With the new version it will also be available in the Professional Edition. The number of references to a function or property will be displayed above those and a mouse click will reveal additional information. I can also see which unit tests call this function and I can run those tests without having to switch to the Test Explorer.
Microsoft also changed the Team Activity View which shows the code history in a clear visualization. I can now directly see at which point in time a developer made changes to a function or class and it is also possible to compare the code with an earlier version directly in the code editor.
Many of those functionalities are not new, but they are displayed more clearly and the relevant information is accessible more easily. Therefore it is easier for me to use those features effectively.
Better to copy well than invent badly
With this motto Microsoft tried to integrate functionalities that have already been invented by other vendors into Visual Studio. In WPF applications I can now see the visual tree. The properties of each FrameworkElement can be viewed and edited in the Live Property Explorer. I used to use the tool Snoop for these purposes but now these features are already included in Visual Studio. When I select an element in the Live Visual Tree I can now jump straight to the place where this element is defined in the code. This way I will find the part I was looking for a bit faster than before.
With the small lightbulb popping up when Visual Studio suggests improvements in the code, Microsoft tries to mimic the highly popular extension ReSharper which is essential for many developers. I can now take a look at a preview of the suggested changes when I hover over a suggestion with the mouse. This is very good for more complex changes since it helps me to understand what is actually going to happen. Unfortunately Microsoft does not provide as many suggestions as the ReSharper does. Therefore I will not dismiss my ReSharper right away – and I guess many developers won’t either. We will have to wait and see how this situation develops but I expect Microsoft to come up with more improvements in this area in the near future.
IntelliTest – a replacement for unit tests?
Another new feature that sounds very interesting is the IntelliTest because it automatically generates unit tests for the current class or function. All possible code paths are checked and test data is generated to enable maximum code coverage. At first, this sounds pretty amazing, but it should be used carefully. Even if the code is covered the test data is generated randomly, since the program does not know the logical sense behind the test. Additionally, I often write unit tests before actually implementing a function. This way I can see potential errors while implementing. Therefore I will still have to write unit tests myself. Nevertheless this tool can be helpful: It might expose test cases I forgot. So this feature is definitely worth taking a look at. Unfortunately it will only be available in the Enterprise version of Visual Studio 2015, and therefore cannot be used by all developers.
A better Blend
In Blend things also changed and got better, mainly because Blend now uses the Visual Studio shell. This leads to the visual design now resembling Visual Studio itself more. Blend’s project explorer has been replaced by the one Visual Studio uses and can now be used more easily. The biggest change in Blend is the new code editor, which is also the same as in Visual Studio. This enables code highlighting and IntelliSense, which makes working with XAML files in Blend a lot easier. This feature is not really new because it was already part of Visual Studio. However, if you compare this to the old code editor of Blend, it is a huge leap towards better usability.
The peek feature was submitted to a few changes as well. I can now directly see the origin of XAML elements and resources without leaving the current context. When I click on a resource and press Alt + F12 a small window pops up in which I can edit this resource. This inline window was accessible before but I was not able to edit the content inside it until now.
Regarding XAML code itself a very basic change was made, polarizing the developer community: it is now possible to define regions in XAML, like they are known from C#. Personally I like this new feature since it will help me structure very large and complex files more easily. However, there are developers who do not like this possibility. Maybe because the regions must be wrapped into comments, which fells un-intuitive, or because they may hide important aspects unintentionally.
Another small feature with big impact can be found while switching from Visual Studio to Blend and vice versa. Until now I was always asked to apply my changes when I edited something in the other program. Now I can set a tiny but important checkmark, which will cause my decision to be remembered, and prevent the obtrusive dialog from appearing ever again.
Another important new feature is the Timeline tool, which does a precise performance analysis of the user interface and replaces the previous XAML UI Responsiveness Tool. With this tool I can see exactly where time is spent in the UI thread, und where possible bottlenecks might be. The use of this tool is very intuitive and simple. When I start a diagnose session, data like CPU and GPU usage, or the framerate, is collected at runtime. The data is very well-arranged, so that the relevant actions in the graph can be filtered, enabling me to see exactly what happens when.
The problem is, that the feature is only supported on systems with Windows 8.1 or higher. Developers still using Windows 7 will not be able to use the tool.
By applying many small changes Microsoft has made Visual Studio 2015 more comfortable to work with. Having turned out not to be the long-awaited one super-improvement, I have still already incorporated all the small advances into my day-to-day, and would not want to work without them anymore.
However, I am a little disappointed, that not all of the ReSharper functionalities have been provided. But Microsoft does seem to be moving in the right direction – even if only taking small steps forward at a time.