Over my last few posts, I’ve blogged about some of the advances we’ve made for the Visual Studio 11 Developer Preview - improvements to programming languages that enable developers to better express their intents while building efficient solutions, and improvements to the .NET Framework that yield faster, more connected, and more integrated apps.
In this post, I’ll switch gears and take a look at some of the advances we’ve made for developer productivity right within the Visual Studio IDE. This includes enabling improved navigation and code understanding in order to help developers complete their work faster.
One of the more prominent advances in the Visual Studio environment enables developers to quickly discover that key piece of information or functionality they need. Previously, developers would navigate through tool windows, lists, documents, and dialogs looking for a particular file, or a particular option, or a particular assembly to reference, or the right control, or a myriad of other targets. With Visual Studio 11, search is now integrated throughout the IDE via a set of features we affectionately refer to as “Search Everywhere.”
Want to quickly find the right assembly to reference? Search is now integrated into the Add Reference… dialog:
Want to quickly find that important command or option you’ve been seeking? The new Quick Launch feature enables you to search through the thousands of capabilities available in Visual Studio. Not only does Quick Launch help you to discover commands or options, but as you can see in the screenshot below, it also helps you to learn the keyboard shortcuts for the results.
Want to quickly find a particular file somewhere in your solution? The new Solution Explorer search feature enables you to filter by file name. Moreover, Solution Explorer has been augmented to enable peering into the classes and members contained in files, and the tool window’s search capabilities apply to such entries as well.
Have a lot of compilation errors and want to quickly find those matching particular criteria? Search is also available in the Errors tool window:
Some tool windows not only provide search capabilities, but also deeply integrate them with other components of Visual Studio. For example, the new Parallel Watch windows provide a “Filter by Boolean expression” box:
When a Boolean expression is supplied, the debugger will evaluate that criteria for each thread, and only those threads for which the expression evaluates to true will be shown:
As you can see, "search" has become an integral part of the development experience in Visual Studio 11. For more detailed information on what's available, I recommend this blog post from the Visual Studio team.
Closely related to this "Search Everywhere" experience is that of searching the text within your documents. Referred to as “Find,” this experience has been streamlined in Visual Studio 11 to minimize the number of dialogs that developers must deal with, and to minimize the amount of time developers spend away from their code. In Visual Studio 2010, typing ‘ctrl+F’ would bring up the Find and Replace dialog:
Now in Visual Studio 11, the Find experience instead starts with a control integrated directly into the code window:
As shown in this screenshot, I no longer needed to manage a separate dialog, or deal with multiple clicks or separate result windows in order to see the text I was seeking; instead, as I typed into the Find control, matching text in my document got highlighted. In fact, for those of you who know and love .NET regular expressions, you can get such real-time highlighted results as you type in your regex:
The Visual Studio team has posted more detailed information on this new Find experience.
How many times have you found that your document tab well overflows with open documents? Every time you “Go To Definition” or open a search result in another file, that file will be opened. And that file will remain open until it’s explicitly closed in the editor by the developer. This is true even when the need for that file was temporary, when it was only needed in order to preview the target content.
Enter the Visual Studio 11 Preview Tab. The Preview Tab sits on the right-hand side of the document window and is used over and over again anytime such a preview is needed:
This greatly helps to reduce the clutter we’ve all experienced in the Visual Studio document windows. If you do want previewed content to be more permanent, with a single click you can “promote” the current file from the preview tab into a full-fledged code window.
For a more detailed look at the new Preview Tab, see this blog post from the Visual Studio team.
Working in a team environment that includes team members using different versions of Visual Studio often requires some finesse. Once one member of the team uses a newer version of Visual Studio to work on a project, that project gets upgraded, and previous versions of Visual Studio aren’t able to use it again. This forces teams to maintain multiple project files in order to support multiple versions of Visual Studio.
With Visual Studio 11, project round-tripping is a first-class feature. Projects created with Visual Studio 2010 can be opened and edited with Visual Studio 11, and most importantly, can then be used again by Visual Studio 2010 (SP1 is required). As long as the projects aren’t modified to use new project capabilities only supported by Visual Studio 11 (e.g. explicitly upgrading a C# application to target the .NET Framework 4.5 instead of the .NET Framework 4), teams don’t have to upgrade all of their Visual Studio installations at once, but instead can have some members of the team using Visual Studio 2010 and some using Visual Studio 11, all running together in harmony.
The Visual Studio Tips and Tricks blog provides more detail on project round-tripping.
Improvements for code understanding and navigation go well beyond searching, previewing, and project round-tripping.
For example, in Visual Studio 2010, C# and Visual Basic gained a feature known as “reference highlighting,” where clicking on a token in the editor caused the editor to highlight all other uses of that token. In Visual Studio 11, this feature now exists for Visual C++ as well:
In this screenshot, I’ve clicked on one instance of “multiplyBy2”, and all three uses of that token have been highlighted by the IDE. This screenshot also demonstrates the semantic-based code coloring that’s new to Visual C++ in Visual Studio 11. Visual C++ also includes support for code snippets, as well as IntelliSense for C++/CLI. For a good exploration of new IDE productivity features in Visual C++, see this blog post from the Visual C++ team.
IDE support for F# has also been improved in Visual Studio 11. For example, F# developers will enjoy much improved parameter help, such that when typing a function or method call, information on each parameter now appears as you type:
Additionally, developers using Visual Basic will now be able to utilize the Call Hierarchy window. This tool window analyzes a solution for all calls to and from methods, enabling developers to more easily understand how a particular method fits into their design (the new Solution Explorer in Visual Studio 11 also provides some of these capabilities):
For more information on the Call Hierarchy window and its support for Visual Basic, see this blog post from the Visual Basic team.
All in all, the Visual Studio IDE has seen some great improvements in this release. I encourage you to download the Developer Preview and experiment with the IDE, trying out the features I’ve discussed in this post, and seeing what other new gems await you. As always, we’re looking forward to your feedback.