views:

1519

answers:

5

In Visual Studio 2005, whenever I would view a file in the main editor, the Solution Explorer would find and highlight that file. Some time ago, this stopped working and the Solution Explorer would do nothing.

This has become quite a pain since following a chain of "Go To Definition"s can lead you all over your solution. Where is the setting to turn this back on?

+10  A: 
  1. Navigate to Tools -> Options
  2. Select "Projects and Solutions" in the tree view on the left
  3. Select "Track Active Item in Solution Explorer"
Trumpi
+15  A: 

Tools>Options...>Projects and Solutions>General

Make sure "Track active item in Solution Explorer" is checked. That should do it.

OwenP
Great answer. It helped me a lot!
Nelson Reis
+2  A: 

Tools->Options->Project and Solutions->General

Check the box "Track Active Item in Solution Explorer"

brendan
+15  A: 

I like to keep this option turned off (especially when working with a big project), but it's useful to be able to find the file in the tree now and then. I found a way to do this here:

http://weblogs.asp.net/kdente/archive/2008/04/30/locating-the-active-item-in-solution-explorer.aspx

I hope I'm not being too verbose here, but here's the guide to making this work that I wrote for my work's wiki:

  1. Go to Tools->Macros->Macro Explorer.
  2. In the Macro Explorer tree that comes up, right-click MyMacros, and then New Module....
  3. Call the new module SyncItem (if you want).
  4. Right-click the new module, then Edit.
  5. Paste this into the code window. (I don't know or care if the Imports lines are necessary; they're just there by default.)

code:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module SyncItem

    Sub SyncSolutionExplorer()
        DTE.ExecuteCommand("View.TrackActivityinSolutionExplorer")
        DTE.ExecuteCommand("View.TrackActivityinSolutionExplorer")
    End Sub

End Module

The macro is most useful if you bind it to a keystroke. Here's how to do that:

  1. Go to Tools->Options, then select Environment->Keyboard.
  2. Find the new macro in the list (start typing "syncitem" or similar in the search box).
  3. I chose Alt-Shift-T (which this dialog box likes to call Shift-Alt-T) for, um, "Tree," I guess? If you're a fan of Edit.LineTranspose, whatever that is (I think it swaps the current line with the following one), then you might like to pick a different shortcut.
Owen
The great thing about this approach is it works even if the project containing the active item is within a closed solution folder. That's why the command has to be executed twice. You don't get that with built-in 'track active item', which only works if the containing project is already open.
piers7
Nice, I suspect Track Active Item of regularly killing VS with my 53-project solution.
Benjol
+6  A: 

I just discovered that ReSharper can do what Owen suggests. I have disabled the "Track active item in Solution Explorer"-setting, and when I'm working in a source-file I press Shift + Alt + L and the file is selected in the Solution Explorer. I haven't changed the binding, so I guess that is the default. The upside to this is that you don't have to create a macro and then bind it to a keystroke (although not very difficult, it still has to be done). The downside is that ReSharper isn't free, so it's probably not a solution for everybody.

Sub-Star
Alt+Shift+L is not a default binding in VS2010 + ReSharper 5 but can be easily added. Thanks.
Borek
Alt+Shift+L was bound for me by default, but I use R# shortcuts not VS when installing R#.
ScottS