Forcing the Solution Explorer to select the file i

2019-01-30 10:32发布

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?

6条回答
戒情不戒烟
2楼-- · 2019-01-30 11:12

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.

查看更多
做个烂人
3楼-- · 2019-01-30 11:14

Tools -> Options -> Environment -> Keyboard

Assign the command

View.TrackActivityinSolutionExplorer

(I use Alt+L)

then to use always hit Alt+L followed by Alt+L

which turns on the feature and locates the file in the source tree and then turns it off again to stop the location bouncing around when you do not want it to.

查看更多
可以哭但决不认输i
4楼-- · 2019-01-30 11:25

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.

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 choose 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.
查看更多
Explosion°爆炸
5楼-- · 2019-01-30 11:27

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

Check the box "Track Active Item in Solution Explorer"

查看更多
何必那么认真
6楼-- · 2019-01-30 11:30
  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"
查看更多
男人必须洒脱
7楼-- · 2019-01-30 11:35

Click on the Tools → Options menu. Select the Projects and Solutions → General option page.

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

查看更多
登录 后发表回答