Visual Studio 2010 CTP Test Drive
First thing I expected to see, but didn’t, was the new WPF shell. Although some modifications are made in the current release shell, it is obvious that it is not entirely a WPF shell. The first thing that is obvious in current release is the WPF TextEditor that looks like an enhanced version of Expression Blend Xaml editor! Turns out, there is a registery key to notify the IDE to show the WPF version of the Shell, but that is not recommended. I Guess there are more work to do in that area and it didn’t make it to the CTP version, so you’d better wait for next releases. This CTP release is a Team System edition, and there are lots of features to play with, but some of them might not be in other editions like Professional when the final version is out.
In previous versions of Visual Studio diagram designs were limited to a Class Designer, and of course custom designers for the late Linq2Sql, etc. but in this release there are more UML designing powers at your disposal that makes VS into a CASE tool. You don’t have to leave your IDE or bug another product just to use UML Diagrams and since it built into the IDE, extension and integration with it is very easy. Available diagrams are Activity Diagram, Sequence Diagram, Use Case Diagram, Component Diagram and our old Class Diagram.
The IDE now has a new feature to find other references to a Variable, Method, or Constructor. This feature, while IS useful, does not come close to Navigations of productivity tools such as Resharper, where you can find everything about a reference you may think of, but again, this is just CTP and things may get better in the final release. I tested this feature on the “œDinner Now” demo project and the Call Hierarchy window didn’t take long to appear, but I have no idea how much time it takes in large scale projects.
There is a new search tool available that lets you find various types. The new search tool is named Quick Search. By entering a keyword in the search dialog, the IDE finds all the types matching that name. I think a simple search dialog would not be enough and more control on the type that is being searched (e.g. Interface, Class, etc.) and the ability to group the search result (e.g. by namespace, folder, assembly) is necessary.
VS now uses a background compiler to compile the code as you write. As you write your code the IDE marks the errors so you don’t have to compile your big project to find out about small typos here and there. You can use this feature in parallel with the other feature named “Create from usage”
Visual Studio now offers to create your types based on their usages. This is something mostly used in TDD with Test First approach and tools like Resharper had something even better than this, ages ago! As you write code (test?), VS checks it with the new background compiler and marks it as error, so you get an option to fix the error by creating the missing Class, interface or even Methods and Properties.
Finally WiX, which was initially an open source project, got integrated with Visual Studio. For those not heard of it, Wix is an installation maker that is flexible, simple, and powerful. Creating setup files with WiX is simple : Create an XML file describing your files, and installation package (where is an .XSD available which can be used as intellisense helper or to validate your XML file), then the WiX engine will create working MSI files. Back when I tested WiX 2.0, you had to manually write the XML file, but now there are commercial and free WiX designers to help you create the XML files. The version of WiX that will ship with Visual Studio apparently is WiX 3.0.
Depending on your point of view, changes in the TextEditor and Extensibility of the IDE might or might not be an issue, but so far I didn’t see a BIG change in the IDE, though there may be more changes in the next releases. Newly added feature seem somewhat unfinished, but this is pre-beta stuff so this is natural. These are just IDE features and there are great stull in the .NET Framework 4.0 that also come with the CTP version.