我不要求在解决方案资源管理器中自动跟踪当前文件的选项。这已经回答了这个问题,我有这个选项关闭,因为我讨厌的行为。
我想要一个快捷方式(或宏,或....)跳转到我正在解决方案资源管理器中编辑的文件。
Answers:
SolutionExplorer.SyncWithActiveDocument
(工具->选项->环境->键盘)
Track Active Item in Solution Explorer
,所以同步解决方案资源管理器仅在按下此快捷方式时发生,而不是在刷新代码文件时“跳”一下。
在Visual Studio 2015、2017和2019中,您可以按Ctrl+ [,然后按s。
这将突出显示当前在“解决方案资源管理器”中正在编辑的文件。
可以通过以下键盘命令进行配置:SolutionExplorer.SyncWithActiveDocument
要重新配置,请导航至工具->选项->环境->键盘
据我所知,VS 2012之前没有这样的选择。
在VS 2012中,引入了“与活动文档同步”选项。您可以在此博客上找到描述和屏幕(滚动到页面中间的“与Active Document同步”)。
要在解决方案资源管理器中找到您当前正在编辑的文件,请执行以下操作:
Ctrl + W + S
我以前使用过Shift + Alt + L
,但是由于某种原因,它不再起作用。
其他建议(Ctrl+\,S
和Ctrl+[,S
Ctrl +`+ S)在VS2015中对我不起作用。简单快捷键可用时,我不使用resharper,也不喜欢使用宏。
在Visual Studio 2015中,通过ReSharper,我可以按Shift+ Alt+L突出显示在解决方案资源管理器中正在编辑的当前文件。
对于VS2010,我找到了此宏并为我工作:
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Public Module Utilities
Public Sub TrackProjectItem()
Dim solution As Solution2 = DTE.Solution
If Not solution.IsOpen OrElse DTE.ActiveDocument Is Nothing Then Return
solution.FindProjectItem(DTE.ActiveDocument.FullName).ExpandView()
Dim FileName As String = DTE.ActiveDocument.FullName
Dim SolutionExplorerPath As String
Dim items As EnvDTE.UIHierarchyItems = DTE.ToolWindows.SolutionExplorer.UIHierarchyItems
Dim item As Object = FindItem(items, FileName, SolutionExplorerPath)
If item Is Nothing Then
MsgBox("Couldn't find the item in Solution Explorer.")
Return
End If
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem(SolutionExplorerPath).Select(vsUISelectionType.vsUISelectionTypeSelect)
End Sub
Public Function FindItem(ByVal Children As UIHierarchyItems, ByVal FileName As String, ByRef SolutionExplorerPath As String) As Object
For Each CurrentItem As UIHierarchyItem In Children
Dim TypeName As String = Microsoft.VisualBasic.Information.TypeName(CurrentItem.Object)
If TypeName = "ProjectItem" Then
Dim projectitem As EnvDTE.ProjectItem = CType(CurrentItem.Object, EnvDTE.ProjectItem)
Dim i As Integer = 1
While i <= projectitem.FileCount
If projectitem.FileNames(i) = FileName Then
SolutionExplorerPath = CurrentItem.Name
Return CurrentItem
End If
i = i + 1
End While
End If
Dim ChildItem As UIHierarchyItem = FindItem(CurrentItem.UIHierarchyItems, FileName, SolutionExplorerPath)
If Not ChildItem Is Nothing Then
SolutionExplorerPath = CurrentItem.Name + "\" + SolutionExplorerPath
Return ChildItem
End If
Next
End Function
End Module
原始资料在这里
在Visual Studio 2010/2012中,您可以使用此扩展名(链接)。它在解决方案资源管理器工具栏和代码上下文菜单上添加了同步选项。