The official source of product insight from the Visual Studio Engineering Team
We are very excited to announce the first release of Solution Navigator, a new tool that merges functionality from Solution Explorer, Class View, Object Browser, Call Hierarchy, Navigate To, and Find Symbol References into a single view. This view can be surfaced as a tool window or, for C# and VB, an interactive tooltip.
The Solution Navigator is included in the latest release of the Visual Studio Productivity Power Tools which is a free download available on the Visual Studio Gallery.
Expand code files to navigate to its classes, expand classes to navigate to their members, and so on
Search your solution, all the way down to class members
Filter your solution or projects to see just opened files, unsaved files, and so on
Preview images by hovering over them, or preview rich information by hovering over code items
Scope the view to just the project, file or class you are working on
Create multiple views of your solution so you can always access the files you need
View relationships between classes and members (such as references or callers/calles in C#)
Let’s look at each of these features in more depth.
Traditionally users have had to work across multiple tool windows to gain both a file-based and class-based view of their solution. The Solution Navigator enables users to navigate from the solution level right down to local variables contained inside a method.
Note: Currently this is only available for C# and VB languages.
The Solution Navigator uses the ‘Navigate To’ feature to search your solution. The search results are presented as a filter in the Solution Navigator tree view, with the search term is highlighted and non-matching visible items (such as a folder containing a search result) greyed out.
Users can search the entire solution or scope the search to a single project, file, class or type; Scoping is covered later on in this post.
Searching the full solution
Scoping to a single project
The Document Well has traditionally been the primary UI for managing open files. However, users can now easily access and search through the documents that are open, unsaved, or have been edited during the current session.
Shows the files that are currently open.
Shows the files which have been edited but not saved.
Shows the files that have been edited during the current session.
Note: The edited filter is not the same as a pending changes list; the edited list will show a file even if an edit has been reverted.
Solution Navigator provides a visual tooltip for most image files:
When working on large solutions, you might find yourself spending the majority of your time working with one or two classes in a single project. Scoping or ‘re-rooting’ the Solution Navigator tree view enables you to focus on the files that matter for your current task. Scoping is also useful when searching large solutions, by scoping to the project or type you are interested in.
To Scope the view to the current selection in the Solution Navigator, click the re-root button on the far right of the item, or use the keyboard shortcut Ctrl + -> (right arrow).
Scoped to project
Scoped to file
Scoped to class
Unlike Solution Explorer, Solution Navigator enables you to create multiple instances of the tool window. This can be especially useful when working across large projects. Each tool window can have a uniquely-scoped view. These views could be focused around a single project, class or file, or even based from search results.
Understanding how a particular method or class works often requires stepping through how the rest of the application interacts with it. Understanding where amethod is referenced in the solution is one of the most useful pieces of information in this task. Solution Navigator brings together some of the key relationships such as references which can exist between classes, methods, and variables and surfaces them inline.
Relationships are only seen for the root item. To see class/member relationships in the tool window, you need to re-root. The interactive tooltips are already rooted at a code item.
Note: Some relationships are available in C# only, we will be looking to increase the number of relationships and languages supported in future releases.
Contains - The members defined by the current class (e.g. methods, properties, …)
References - The places where the current class is referenced in the current solution
Returned By - The methods that return instances of the current class (C# only)
Derived Types - The types that are derived from the current class (C# only)
Base Types - The types that the current class derives from (C# only)
Contains - The parameters contained within the current method, plus local variables if the method is part of the current solution
References – The places where the current method is referenced in the solution
Called By – The methods that call into the current method (C# only)
Calls – The methods that are called by the current method (C# only)
Type - The data type of the current member
References – The places where the current member is referenced in the solution
New Window – This button creates a new instance of the tool window based on the current selection in the Solution Navigator
Collapse All – This button collapses all of the tree view so that only the top-level projects are visible
View as root – This button scopes the view in the in the Solution Navigator to be ‘rooted’ at the current item instead of the overall solution – see the “Scope” section for more details.
Navigate Back – This button returns the user to the previous view shown. Navigation events only occur when the user alters the current view by performing a search, viewing a filter/relationship or changing the root item of the view.
Navigate Forward – This button is only visible if the user has navigated back from a view. Navigation events only occur when the user alters the current view by performing a search, viewing a filter/relationship or changing the root item of the view.
Navigate Up – This button changes the view in the Solution navigator to be rooted at the parent of the current item. This button is only visible if the user has re-scoped and to a point where the immediate parent of the current item is not the same as the previous view.
The purpose of the tooltip is to surface the rich relationship information from Solution Navigator inside the editor.
Note: These key bindings can not currently be changed. Sorry, we'll fix this soon!
We realize that some of the features offered in this extension might not be to everyone’s liking, so we’ve enabled the ability to disable the following features:
The settings for the Solution Navigator are located under Tools->Options->Productivity Power Tools->Solution Navigator.
If you wish to turn of the Solution Navigator entirely, go to Tools->Options->Productivity Power Tools-> All Extensions.
Note that in the current release, the Solution Navigator tool window doesn’t support everything that the Solution Explorer supports. The following list details the not yet implemented features and known issues for the current release:
Solution Navigator does not support:
This is our first public release of the extension, and we are very happy with the feedback so far. We’ve already been working hard on additional features and will hopefully get some into the next release of the Productivity Power Tools!
Perfect tool guys, especially the Solution navigator. I really love your Interactive tooltips feature but there is one thing that makes it really useless for me now (not your fault though). I am using Resharper and it overrides Quick view tooltip that Visual Studio offers in its own way. This is cool but it also appears right in front of your interactive tooltip making it really hard to use or even access. Ctrl+1 shortcut does not work either because the damned Resharper make its own override with another trigger and since you does not allow to remap this shortcut it cannot be fixed (and the bloody Resharper does not allow to disable its Quick view without deactivating it completely).
Can you please make the keyboard shortcut visible in Visual Studio options ASAP?
Thanks a lot.
In the latest released version of the extension, you should already be able to remap Ctrl+1 and Ctrl+2: the commands are named Edit.ShowSolutionNavigatorPopupForSelection (Ctrl+1) and Edit.ShowSolutionNavigatorPopupForFile (Ctrl+2).
Also seeing SCC overlay problems in VisualHG. All files have the plus symbol overlaid, regardless of status. There are no overlays in non-SCC'd files
See visualhg.codeplex.com/.../View.aspx. I am unsure whether it natively uses Tortoise overlays in VS or not - you'd have to ask the dev or check the source code out.
I can't even see the cotton-pickin solution navigator, much less use it. What do I need to enable viewing this "enhanced" solution explorer. I am so frustrated at all the "hype" I see around this tool, yet no documentation anywhere for simpletons like myself
There should be a command to show the Solution Navigator on the View menu.
There is a command in the View menu and you could use Ctrl+W,F
VisualHG Source-Control Status Icons
The VisualHG Overlay Icon support I used is very standard.
For this I implemented the interfaces IVsSccGlyphs and IVsSccManager2.
// Allows full customization of source control glyphs. (4 custom glyphs only)
public interface IVsSccGlyphs
// Called by the IDE to get a custom glyph image list for source control status.
int GetCustomGlyphList(uint BaseIndex, out uint pdwImageListHandle);
public interface IVsSccManager2 // Base source control functionality interface
/// Provide source control icons for the specified files and returns scc status /// of files
int GetSccGlyph(int cFiles, string rgpszFullPaths, VsStateIcon rgsiGlyphs, ...
I hope that helps
Very useful and powerful tool.
Just 1 small improvement that I would make it even better: The filters including Source Control Status - filter those that I have checked out.
Great extension, but having the tooltips replaced should be an option. The fact that I can't see the arguments for a function by hovering is a huge productivity minus for me.
One thing of note is that you cannot double-click solution folders to expand/collapse them. (you can still single-click the tiny arrow at least) I imagine this is unintended as all other folders can be expanded/collapsed by double-clicking them.
When I try to see classes tree in ...aspx.cs file I see text "Unable to get code items"
Is there any possibility to make your Solution Navigator to work with extensions that are hooked into Solution Explorer? Some VS extensions add their own commands to solution explorer which does not work in Solution Navigator.
This is really useful.
I will like to add a vote to have a new link next to 'Unsaved' and 'Edited' for 'Checked Out'. That would be really useful.
Otherwise great utility...
I am also getting the "Unable to get code items" so I cannot drill down any lower than the module's file.
Do you have any support / troubleshooting links?
Great tool, thank you.
We work with big solutions containing several dozens of projects, most of them unloaded though. Therefore I suggest an option to show loaded projects only.