Announcing the Solution Navigator

Announcing the Solution Navigator

Rate This
  • Comments 60

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.

The Solution Navigator enables you to:

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#)

Tool Window

1

Interactive Tooltip

2

Let’s look at each of these features in more depth.

Expand code files to navigate to its classes, expand classes to navigate to their members, and so on

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.

3

Search your solution, all the way down to class members

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.

4

5

Searching the full solution

Scoping to a single project


Filter your solution or projects to see just opened files, unsaved files, and so on

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.

Open

Shows the files that are currently open.

6

Unsaved

Shows the files which have been edited but not saved.

7

Edited

Shows the files that have been edited during the current session.

8

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.

Preview images by hovering over them, or preview rich information by hovering over code items

Solution Navigator provides a visual tooltip for most image files:

9

Scope the view to just the project, file or class you are working on

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).

10

 

 

Scoped to project

Scoped to file

Scoped to class


Create multiple views of your solution so you can always access the files you need

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.

Additional views can be created by two methods:
15  - Clicking the ‘New Window’ button on the tool window. This creates a new window with the view rooted at the current selection.
16 - Clicking the ‘Pin’ button on the interactive Tooltip. This promotes the Tooltip to a tool window which can be docked.
14

View related information about classes and members (such as references or callers/callees for C#)

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.

17

Relationships shown on classes:

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)

Relationships shown on methods:

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)

Relationships shown on members:

Type - The data type of the current member

References – The places where the current member is referenced in the solution

Solution Navigator Tool Window Buttons and Commands

18

15

New Window – This button creates a new instance of the tool window based on the current selection in the Solution Navigator

 

19

Collapse All – This button collapses all of the tree view so that only the top-level projects are visible

 

20

Send Feedback!

 

21

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.

 

22

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.

 

24

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.

 

23

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.

   

Solution Navigator Interactive Tooltip Buttons and Commands

The purpose of the tooltip is to surface the rich relationship information from Solution Navigator inside the editor.

  • Hover over elements to see the tooltip, then click anywhere on the tooltip to switch the view to an interactive mode
  • Press Ctrl+1 to open a relevant tooltip at the current cursor location
  • Press Ctrl+2 to quickly navigate to any class/member in the current source file
  • Click the Pin icon to promote the tooltip to a tool window.

 Note: These key bindings can not currently be changed.  Sorry, we'll fix this soon!

Tooltip before expansion:

25

Tooltip after expansion:

26 

Solution Navigator Settings

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:

  • Interactive tooltip
  • Re-rooting - This affects both the tool window and tooltip
  • Member expansion – This affects both the tool window and tooltip
  • Showing the Open, Unsaved and Edited filters

The settings for the Solution Navigator are located under Tools->Options->Productivity Power Tools->Solution Navigator.

 27

If you wish to turn of the Solution Navigator entirely, go to Tools->Options->Productivity Power Tools-> All Extensions.

Solution Navigator Known Issues

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:

Known Issues:

  • Opening a solution causes Solution Explorer to automatically receive focus
  • Adding a new folder to the solution switches focus from Solution Navigator to Solution Explorer
  • Adding a project to the solution switches focus from Solution Navigator to Solution Explorer

Not Yet Implemented Features:

Solution Navigator does not support:

  • Drag and Drop of files onto, out of, or inside the Solution Navigator
  • Selecting multiple files at once
  • Persistence of the expansion state of items within the Solution Navigator across sessions of Visual Studio.
  • Updating item icons to reflect an item being ‘cut’
  • Updating folder icons to reflect an ‘open’ state

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!

Thanks for your time, and we hope you enjoy this extension.

Solution Navigator Team

  • Adam Nathan – Principal Developer
  • Matthew Johnson – Shell Developer
  • Adrian Collier – Program Management/ User Experience
  • Amy Hartwig - QA
  • Sam Zaiss – User Experience

Project Contributors:

  • Andrew Neil – Source Control Testing
  • Srivatsn Narayanan – VB Language Model integration
Leave a Comment
  • Please add 1 and 2 and type the answer here:
  • Post
  • Great job guys.. I've retired Solution Explorer on my machine... now the Solution Navigator holds that place!

    Arun

  • Looks really handy. Good work!

  • Another issue is that it hijacks the AltGr+2 keyboard combination (AltGr apparently translates to Alt+Ctrl in VS2010) which is the "@" sign on Nordic (Danish Norwegian) keyboards. So thats pretty imparing. You can disable the Solution Navigator and use the other goodness in the productivity package though.

  • Looks quite interesting.

    There is one thing I noticed that makes life a bit difficult. I'm using VisualSVN, which overrides the source-control status of the Solution Explorer with its own (SVN-like) icons. Now the Solution Navigator is back to displaying the original icons provided by Visual Studio. Is there a chance to get the VisualSVN icons in Solution Navigator, too?

    Thanks, Michael

  • Very nice add-in! What is about full support for native C++ projects?

  • Excellent.  In my VB forms I only seems to see the controls listed, not any of my methods, etc.  Is that correct?

  • 'ALT GR'+2 bring up the same window as CTRL+2.. Please make this optional, because in Denmark the @ sign is on 'ALT GR'+2. So in effect I can't have Solution Navigator enabled and make @ signs at the same time.

  • This is awesome!

    I started using it yesterday on a large solution and it made navigating through code so much faster. Having the features of Class View, Object Browser, Call Hierarchy, Navigate To, and Find Symbol References as a tool-tip is incredibly powerful.

  • The tooltips pops up very quickly. Slowing it down a bit would be nice - or make it configurable. A two or three second delay would make it less distracting when moving the cursor around the code editor.

    Also, i had trouble renaming a solution yesterday (content menu->rename). I couldn't do it in Solution Navigator or Solution Explorer. I had to F2 in Solution Explorer to get it to work.

    I only used Solution Navigator for a day but I already love it.

  • Pretty amazing, one wonders why this is not the in the package and enabled by default.

  • I started using the Solution Navigator on my large C++ project as soon as it was released, and I have to agree with Mr. Mahendrakar: the Solution Navigator is my new default tool window where I used to keep the solution explorer.

    Even without the additional language features available in C#/VB, the ability to scope the files displayed is a major time-saver when working on a large project.

    I would welcome the opportunity to totally replace the Solution Explorer were it not for the few little things missing from the Solution Navigator, especially the ability to drag-and-drop files and filters around in the project hierarchy.

    I'll be looking forward to what the VS team comes up with in the future for this great tool.

  • I'm really impressed with this.  The ability to filter the tree alone is a real time saver.

    Re @Feeback's comments on the tooltips in the editor popping up to quickly, I have to agree.  It's slightly annoying and distracting.  I'd prefer a brief delay if possible.

    Hope the Solution Navigator is going to be the default in VS2012 :-)

  • Have to choose between changing my keyboard layout from the control panel, forgive about derived types and so... or be unable to use | and @. Currently I got those chars from the charmap and used SuperCopyPaste to keep them available... Then used those to write some code snippets... so, Thank you I lastly learned to write code snippets. If anybody wants the snippets write me to my name at gmail, but I would suggest you to learn to write them yout self :P.

  • I would also like to have a hotkey to the search in the navigator so that I can quickly go and search for refrences in the navigator. Just a thought.

    Keep up the good work!

  • Hi All,

    Thanks for the amazing feedback, we are very pleased with the reception of our first release and are already working hard on updates for the next release.

    @Johannes Hansen, @Lars Holm Jensen and @Thearot

    Thanks for your feedback on the keyboard binding issues; we are looking into releasing a fix for this issue shortly.

    @Michael,

    Unfortunately in cases where a provider overrides the default icons in the Solution Explorer, an update would be required from the source control provider rather than the Solution Navigator Team.

    @Samsa

    We would love to have full feature parity across all our languages; however this is something we are going to have to investigate for future releases.

    @Brendan0

    Please can you send a screen shot of this issue along with a description to snfeedback [at] microsoft.com so we can investigate further.

    @Feedback

    Thanks for the suggestion of adding a delay to the tooltip; we will investigate this option for future release.

    Renaming a solution is a known issue we will be looking to address in a future release.

    @Keith

    Thanks for the suggestion; we will look into adding a shortcut which takes users directly to the search box.

    Thanks for your time,

    Adrian

Page 1 of 4 (60 items) 1234