我正在通过DGML API生成一个自定义工作流图,其中每个节点对应一个C#类。我希望能够使用内置的“转到定义”功能,但缺乏文档。
发布于 2015-02-13 23:12:27
如果您知道类的文件名和符号定义的位置,则可以使用VsShellUtilities类打开文档并将代码工件滚动到视图中(通过设置插入符号位置)。在我的一个扩展中,我做了这样的事情...
如果我有一个用来存储文件名和文本范围的SourceInfo类型...
void GotoDefinition(
IServiceProvider serviceProvider,
SourceInfo source)
{
IVsUIHierarchy hierarchy;
uint itemId;
IVsWindowFrame windowFrame;
IVsTextView view;
VsShellUtilities.OpenDocument(
serviceProvider,
source.Filename,
Guid.Empty,
out hierarchy,
out itemId,
out windowFrame,
out view);
if (view != null)
{
int line, column;
int pos = source.TextRange.Start;
if (view.GetLineAndColumn(pos, out line, out column) == VSConstants.S_OK)
{
view.SetCaretPos(line, column);
view.CenterLines(line, 1);
}
}
}
class SourceInfo
{
public string Filename { get; set; }
public TextRange TextRange { get; set; }
}https://stackoverflow.com/questions/28497753
复制相似问题