如何导航到位于外部程序集中的符号定义

问题描述 投票:0回答:1

我有一个带有自定义“代码图”工具窗口的 VS 扩展。它在树视图控件中显示特定的代码元素。树视图节点支持通过双击树节点导航至符号定义。导航使用与树节点对应的 Roslyn 符号,并导航到它们。

这一切都依赖于 Visual Studio 和 Roslyn 之间的集成。基本上,它尝试从 Roslyn 符号或节点获取位置文件路径和跨度,然后使用文件路径打开文件并通过 VS SDK 实用程序获取

Microsoft.VisualStudio.Text.Editor.IWpfTextView
。然后我使用
IWpfTextView
和位置跨度将插入符移动到所需位置。您可以在 GitHub 上查看详细信息: https://github.com/Acumatica/Acuminator/blob/dev/src/Acuminator/Acuminator.Vsix/Utils/Navigation/VSDocumentNavigation.cs

这适用于解决方案中声明的符号,但不适用于外部程序集中声明的符号。同时,Visual Studio 本身使用 F12 导航到外部符号。

我想知道是否可以使用 Roslyn 和 VS SDK 以编程方式重复相同的导航。

到目前为止,我只找到以下提示:

roslyn visual-studio-extensions vsix visual-studio-sdk vssdk
1个回答
0
投票

正如评论中所讨论的,是的,您可以只调用 VisualStudioWorkspace.TryGoToDefinitionAsync(); Project 参数只是用于帮助我们找出符号的来源——符号仍然可以来自元数据或其他地方。

© www.soinside.com 2019 - 2024. All rights reserved.