Visual Studio 11 IDE Advances
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.
Search
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.
Find
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.
Preview Tab
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.
Project Round-Tripping
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.
And more…
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.
Namaste!
Comments
Anonymous
November 17, 2011
The comment has been removedAnonymous
November 17, 2011
Features are cool, but the number one thing we want fixed in VS vNext is performance, at least for C++ development. I have downloaded the Developer Preview as soon as it became available. I hate to say that the performance of the Developer Preview is the same as that of VS 2010, which is completely unacceptable. Will we there be another Developer Preview or a beta version? Because if the performance stays as bad as it is now, none of the new features will matter.Anonymous
November 17, 2011
Somasegar, VC11 is broken by design, and you know it... see: connect.microsoft.com/.../690617 Stop working on VC11 until this BUG is fixed, or you'll loose a lot of your customers!Anonymous
November 17, 2011
I just read through link supplied by dbu (thank you). I couldn't believe my eyes. Bug report: Any app that you create with Visual C++ vNext cannot be used on a widely used operating system, Windows XP. This effectively prevents its use for any serious work. The official and final response from Microsoft: Thanks for the report. This behavior is by design in MFC and CRT for Visual Studio vNext. The minimum supported operating systems are Windows Server 2008 SP2 and Windows Vista. Windows XP is not a supported operating system for the release (design-time or run-time). WHAT?????! This is insane!Anonymous
November 17, 2011
Love the pervasive search features built into Visual Studio. However, I note with a great amount of concern that the excellent* Find dialog (both Ctrl-F and Ctrl-Shift-F for Visual C# settings) will be replaced with Quick Find from the PowerTools extension for VS2010. I cannot express how much I hate that feature. It just doesn't work as well as the regular find dialog. It always forgets the find/replace in selection setting. Its just useless. I sincerely hope that the quick find will be optional.Anonymous
November 18, 2011
NiceAnonymous
November 18, 2011
New features are nice, but only when the performance with very large projects is excellent. And people say that the Developer Preview is as bad as VS 2010 which is unbelievably slow when compared to VS 2008. Microsoft, please don't release VS vNext unless you're made it 2 times faster than VS 2008 when working on solutions with 50+ projects that have 1 million lines of code. Because that's how we use Visual Studio.Anonymous
November 18, 2011
The comment has been removedAnonymous
November 18, 2011
To everyone commenting about Visual Studio performance, thank you for your feedback. The team definitely hears you. Larry Sullivan, Director of Engineering for the team, has written a blog post updating readers on Visual Studio performance at blogs.msdn.com/.../an-update-on-visual-studio-performance.aspx. I'd encourage you to read that and to follow-up there and through the channels he discusses to provide further performance feedback. The team does appreciate your comments; in particular, as you comment on performance concerns, it'd be very helpful if you could provide specifics about exactly what areas are most troubling to you and where you'd benefit from the most improvement. Chris, thank you for your suggestions on the Solution Navigator. The team responsible is now actively discussing your suggestions. Abhijit, thank you as well, and I've forwarded your concerns to the right folks. Have you tried out the find experience in the Visual Studio 11 Developer Preview? Ctrl+Shift+F brings up the same Find and Replace dialog that is present in Visual Studio 2010.Anonymous
November 18, 2011
I really like the new search feature that you mentioned that I now use in VS 2010 but I wish I could limit where it searches. A lot of times I want to search in only non minified .js files. My biggest complaint of 2010 was crashing, although it recovers nicely. VS 2010 SP1 seemed to mostly fix. Love the new javascript debugging in 2011 - I really can't wait for this upgrade.Anonymous
November 18, 2011
Very interestingAnonymous
November 18, 2011
The comment has been removedAnonymous
November 19, 2011
As to search, I propose to implement something like 'cascaded search'. Cascaded search will enable searching within results of previous search. This will reduce requirement to write complex search templates. Also some undo/redo could be helpfull.Anonymous
November 20, 2011
The comment has been removedAnonymous
November 20, 2011
The comment has been removedAnonymous
November 21, 2011
Hi Abhijit, We have definitely heard the feedback from the Productivity Power Tools and have been using it to refine the Find experience in Visual Studio 11 Developer Preview. To name a few, we have fixed issues in the selection scope from Power Tools such as no selection highlight, no wrap alert, scope reverting to Current Document etc.. With the new Find, while searching within a selection, the selected text is highlighted to indicate the scope. Once the search is complete, a wrap alert is provided. In Power tools, the selection would be lost once you click inside the document. We have fixed this issue and Find now retains the selection, until explicitly dismissed. You will find some of these improvements in the Build release, others are in our internal builds for upcoming releases. If you have a chance to try out the Developer Preview, you’ll notice that much of the Quick Find functionality is now also available as part of Find in Files (Ctrl+Shift+F). I’d encourage you to try it out and let us know what you think. After the Build release, we have continued to make significant improvements to Find. If there’s a specific bug that you want to verify is fixed or if you have more detailed feedback, feel free to contact us directly @ VSFindFeedback2@microsoft.com. Thanks! Murali Murali Krishna Hosabettu Kamalesha | Program Manager | Visual Studio Professional - Editor teamAnonymous
November 21, 2011
One more point. I made an extension for Visual Studio - visualstudiogallery.msdn.microsoft.com/ef4ac3e9-d056-4383-8ca2-11721bd879b4 - It's pretty popular. I'd love for the features to be included in solution navigator by default so I could deprecate it. If not, please make sure there is an easy API for working with the solution navigator. The current Solution Explorer has some terrible problems with lazy loading which is almost impossible to get around in code - connect.microsoft.com/.../visual-studio-api-nested-solution-folders (lazy loading is great - but make sure there's a way for us to perform a load in code) I've got a lot more details about this problem if you need it. Finally I can see having class details in the solution explorer as a benefit and an annoyance. I'd love a button which toggles it on and off.Anonymous
November 21, 2011
Will VS2011 support ;
- Click Once deployment of F# applications?
- compiling of XAML as 'Page' within F# projects?
Anonymous
November 22, 2011
Lack of VC++ Windows XP runtime support is UNACCEPTABLE. I will not use this tool for VC++. Maybe it will be good in 2017.Anonymous
November 22, 2011
I think some clarification is needed on the Visual C++ issue - is the developer preview limited to building C++/MFC applications targeted to Windows XP only, or is the actual final release of 2011 going to be limited in this way? If that is the case then 2011 is going to be totally un-usable for a staggering number of users - can anyone shed some light on this?Anonymous
November 27, 2011
I have also found that the Crystal Reports interfacing in VS2011 is much better over VS2010. I have a project that I would not migrate from VS2008 to VS2010 due to Crystal Reports being ASP 4.0, the project ASP 3.5, VS2008 compiles no problem. VS2010, would not accept the project, but VS2011 preview does.Anonymous
December 01, 2011
Nice additions. But for the time being I am afraid I will remain loyal to VC++ 6: I see no reason to upgrade to the latest compiler as long as my code keeps running with no problems whatsoever in any windows distribution. I have several thousands of customers and NO problems or complaints whatsoever. My productivity with VC++ 6.0 is difficult to achieve even with the latest C++ IDEs, no matter what the new additions were, they are still behind the "old" and "outdated" VC++ 6.0. The requirements for the latest versions are too hefty (operating system, memory, hard disk space) and I find difficult to find reasons that justify the migration to the new tools. I have many of these and others by third party tools since a long time ago: I didn't had to wait years and years to get these and many others. Funny is not that there is still no rename refactoring in the vsNext C++ which is absolutely essential for my work. I am so comfortable with VC++ 6.0 that I don't think I will ever need to go beyond version 6th, not as long as the MFC feature pack classes are still not properly integrated into the MFC classes and pulling a staggering 1.3 MB to every statically linked application I build with VS2008. Since VS.NET, the IDE lacks a lot of the functionality which was present in the VC++ 6.0 IDE, so much that any upgrade looks a downgrade. I don't understand the philosophy that keeps the team adding and adding new features and releasing new versions, while not solving the underlying problems of the earlier versions, regardless of how useful the new features may appear, from my perspective, it looks like building castles in the air. I have come to the conclusion that expecting that a software like VS, with such level of complexity will be error free is an unattainable utophy with the current technologies and we will have to surrender our pretensions to that fact or expect to live in continuous pain and frustration. MarcelloAnonymous
December 09, 2011
I look forward to pirating VS 11 assuming Microsoft continue the same pricing policies they did for upgrades from 2008 to 2010.Anonymous
December 12, 2011
The comment has been removedAnonymous
December 12, 2011
Does VS11 will be released after June 2012? Does VS11 is platform of window 8 or 7? I have to buy my new pc with 64-bit along with window 8 version.Anonymous
December 12, 2011
Does COLLECTION 's control is back? But VS10 is back on COLLECTION's controlAnonymous
December 13, 2011
Thank you all for the feedback, including that on XP, on reliability, and on performance. Dave Kerr, the Developer Preview does not support XP. Which operating systems will be supported by the final release have not yet been announced. supra, the schedule for the RTM release also has not been announced. The Visual Studio 11 Developer Preview runs on both Windows 7 and Windows 8.Anonymous
December 13, 2011
@Stephen Toub >>...Which operating systems will be supported by the final release >>have not yet been announced... then why was this Bug closed "by design"?connect.microsoft.com/.../690617 regards dbuAnonymous
January 21, 2012
@Stephen and Murali: Thanks for noticing my comments on the quick find. Its as much a case of "who moved my cheese" as well as the new feature not working as well as the old one. Ctrl-F and Ctrl-Shift-F do work the same way but only after I've tweaked the settings in the "Find-All" dialog - each and every time to change its behaviour from "find in all" to "find in document". Its a productivity thing.Anonymous
February 22, 2012
David C, To answer your questions, Visual Studio 11 will not directly support Click Once deployment of F# projects, but there are some good workarounds. You can create a C#/VB front-end for an F# library, and that can be deployed with Click Once. Or, you could create a C# wrapper project that references the F# .exe as a resource. Then, with Click Once, all the referenced assemblies will be appropriately deployed. Another option is to use manual Click Once deployment, as outlined here: msdn.microsoft.com/.../xc3tc5xx.aspx. In response to your second question, you won't be able to compile a XAML page within F# projects. In such scenarios, we recommend doing the UI in C#/VB, where you can use the designer. You can then put your program logic in an F# library and call it from the front-end. Donna Malayeri Program Manager, Visual Studio F#