首页 > 解决方案 > 获取当前编辑文件的项目

问题描述

我按照本教程创建了我的第一个 VS 扩展。

我想从 和 获取当前编辑文件的项目,即相关项目ITextView textView属性ITextBuffer textBuffer

经过一番搜索,我发现:

  1. 从 ITextView 获取文件路径

  2. 获取所有项目属性

似乎我可以将文件路径与所有项目进行匹配来决定这一点,但这并不理想。

我可以直接在某处获得这些信息吗?

标签: visual-studio-extensionsvsx

解决方案


嘿 :) 上周我也有同样的问题。

当前打开的文件名:

DTE dte = Package.GetGlobalService(typeof(SDTE)) as DTE;
        string docName = dte.ActiveDocument.Name;

我使用了 ITagger - 每次代码发生更改时都会调用它,因此您始终是最新的。看看这个教程

IEnumerable<ITagSpan<IssueTag>> ITagger<IssueTag>.GetTags(NormalizedSnapshotSpanCollection spans)
    {
        DTE dte = Package.GetGlobalService(typeof(SDTE)) as DTE;
        string docName = dte.ActiveDocument.Name;

        foreach (SnapshotSpan span in spans)
        {
            //look at each classification span \
            foreach (ClassificationSpan classification in m_classifier.GetClassificationSpans(span))
            {
                //if the classification is a comment
                if (classification.ClassificationType.Classification.ToLower().Contains("comment"))
                {
                    //if the word "todo" is in the comment,
                    //create a new TodoTag TagSpan
                    int index = classification.Span.GetText().ToLower().IndexOf(m_searchText);
                    if (index != -1)
                    {
                        yield return new TagSpan<IssueTag>(new SnapshotSpan(classification.Span.Start + index, m_searchText.Length), new IssueTag());
                    }
                }
            }
        }

推荐阅读