I’ve just installed VS2010 on my RC version of Win 7 and thought I’d do a short-ish review of the application along with the main new features of it as I find them. This won’t include TFS 2010, just VS2010 concentrating on C# support.
I want to talk about the main IDE features of VS2010 in this post without talking too much about the specific features of e.g. C# or any of the new namespaces etc.
Installation was relatively smooth with reasonable support for suspend/resume on the downloads. The download and install was actually pretty quick, with just the one reboot required for .NET 4.0. The install also went along pretty snappily – probably 30 minutes for the whole thing from start to finish (ironically this is long than the install of Windows 7).
Here’s pretty much what you get after the install is complete:
The IDE is now written completely in WPF, which gives us some nice new features. The home page is much more accessible now, with a news-ticker-style feed reader along the bottom, plus the three areas as above which let you navigate around VS as well as online content. The “New Project” dialog has been given an overhaul and looks a bit easier to work with, too.
One of the first things I tried was the new docking options for code files. You can now have multiple files side-by-side during editing, or completely undocked which is really nice – especially handy for multiple monitor scenarios e.g. working with XAML and code behind simultaneously. Unfortunately the docking seems limited to either side-by-side or top-to-bottom – you can’t have a tile-style effect of code files, which is a shame. But it works really well – the properties pane changes as you select a different pane etc., it’s all very nice.
Zooming / resizing of text is now completely integrated within the text editor – and can differ across text panes and different text files on the same pane – so you might have a large file zoomed out and another one in large font as required. To zoom in or out, the easiest way is to just hold down CTRL and scroll up or down on your mouse’s wheel.
The intellisense support has been tarted up a little bit to make our lives a bit easier. The main difference is that in addition to automatically moving the pop-up menu to whatever you’re typing, it also filters out possibilities based on what you’re typing. This seems like a small change but it actually makes it much easier to navigate to a type.
They’ve made a bit of a song-and-dance about the new navigation features – in fact I remember seeing someone give almost a 20 minute demo of how to find a file in Solution Explorer (!) late last year during the first demos of VS2010. The main thing that they have done is allow you to quickly find a file or type within VS without having to spend time doing find-in-files (which just does a string match rather than finding symbols).
Here’s a simple example… I have an Employee class and want to find the definition of it (and before you say “hit SHIFT+F8!” or “hit F12”, assume that we don’t have any references to it in an open code file!). What we might do in VS2008 is hit CTRL+SHIFT+F to do a find in files, and then type in Employee.
In my simple dummy project, even with just a few code files, I end up with 30 references to the word Employee:
This includes matches to anything that has the word “employee” in it. Sure, you can do case-sensitive matching etc. but it’s still not a great option IMHO. Here’s the new way to do it with “Navigate To”.
Hit CTRL+ , (comma) and up pops a window that you can type into, with results shown below. As you type, the list gets filtered out – the difference being that the results are only of one of the following (I think): –
- Types (Classes/ Structs)
Using this technique, searching for Employee shows a much better set of results, plus I can refine the search with the find-as-you-type functionality.
This can go even further because “Navigate To” understands casing in a very specific way: –
- If you put your search term in lower-case, the search is case-insensitive (e.g. searching for “employee” returns “Employee.cs”.
- If you put your search in in mixed-case, the search is case-sensitive (e.g. searching for “Employee” does not return “employeeDataGrid")
- If it cannot a case-sensitive match, it returns a case-insensitive match of all files.
- Best of all, it understanding Camel Casing. So if I search for “GE”, I see only methods such as GetEmployee. If I refine this to “GET”, I get the three GetEmployeesTest methods. Smart.
You can then navigate through the results using the cursor keys; hitting ENTER takes you to that reference. So this feature is pretty much like Find all References (SHIFT+F8) except you can choose the search term. This is a very powerful feature which will (IMHO) see us using the Solution Explorer less and less over time, using it just for organising your Solution files, and leaving navigation at the keyboard.
View Call Hierarchy
This is a great feature! It’s almost like a design-time call stack viewer. It gives you a tree-view of all calls from and a to a given method. Right-click a method call and choose View Call Hierarchy. In this example I’ve highlighted the GetEmployees () method. Below I can see all calls from within that method, and all other methods which call the GetEmployees () method. This is very, very useful if you want to see the chain of messaging from start to finish – especially as you can drill into the child methods as well e.g. Get Employees calls LoadEmployee which calls OpenConnectionToDb etc. etc.
You also can see details of the call site i.e. the actual line of code over the method that you have highlighted in the Call Sites (right hand side) column.
This are only my initial findings of the IDE but already I can see that they’ve made some very nice enhancements to VS 2010 which should (hopefully!) make our lives as developers much, much easier – although again, as per CodeRush etc., you’ll need to invest a little bit of time up-front getting familiar with the new features so that you can use them efficiently.