Получить проект текущего файла редактирования - PullRequest
0 голосов
/ 22 января 2020

Я создал свое первое расширение VS, следуя этому учебнику .

Я хотел бы получить проект текущего файла редактирования, то есть связанные свойства проекта из ITextView textView и ITextBuffer textBuffer.

После некоторых поисков я обнаружил:

  1. получить путь к файлу из ITextView

  2. получить все свойства проекта

Кажется, я мог бы сопоставить путь к файлу со всеми проектами, чтобы решить это, но это не идеально.

Могу ли я получить эту информацию прямо где-нибудь?

1 Ответ

0 голосов
/ 22 января 2020

Привет :) У меня был такой же вопрос на прошлой неделе.

Текущее открытое имя файла:

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());
                    }
                }
            }
        }
...