Привет :) У меня был такой же вопрос на прошлой неделе.
Текущее открытое имя файла:
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());
}
}
}
}