Visual studio 2010 强制从外部事件更新标记

Visual studio 2010 强制从外部事件更新标记,visual-studio-2010,plugins,mef,Visual Studio 2010,Plugins,Mef,这是一个有点异国情调的问题,但无论如何我都会尝试 我正在使用MEF编写VisualStudio2010扩展。在我的代码中,每当保存文档时,我都需要提供一些错误图示符,如制动点。问题是,我似乎无法找到如何在不让用户编写任何内容的情况下强制调用ITagger的GetTags 我可以捕获document save事件,但我缺少了这与调用GetTags方法之间的联系。有什么想法吗 下面是一些代码: internal class RTextErrorTag : IGlyphTag {}

这是一个有点异国情调的问题,但无论如何我都会尝试

我正在使用MEF编写VisualStudio2010扩展。在我的代码中,每当保存文档时,我都需要提供一些错误图示符,如制动点。问题是,我似乎无法找到如何在不让用户编写任何内容的情况下强制调用ITagger的GetTags

我可以捕获document save事件,但我缺少了这与调用GetTags方法之间的联系。有什么想法吗

下面是一些代码:

internal class RTextErrorTag : IGlyphTag
    {}

    class RTextErrorGlyphTagger : ITagger<RTextErrorTag>
    {
        private IClassifier mClassifier;
        private SimpleTagger<ErrorTag> mSquiggleTagger;
        private EnvDTE._DTE mMSVSInstance = null;
        private List<object> mDTEEvents = new List<object>();

        internal RTextErrorGlyphTagger(IClassifier classifier, IErrorProviderFactory squiggleProviderFactory, ITextBuffer buffer, IServiceProvider serviceProvider)
        {
            this.mClassifier = classifier;
            this.mSquiggleTagger = squiggleProviderFactory.GetErrorTagger(buffer);
            mMSVSInstance = serviceProvider.GetService(typeof(EnvDTE._DTE)) as EnvDTE._DTE;
            var eventHolder = mMSVSInstance.Events.DocumentEvents;
            mDTEEvents.Add(eventHolder);
            eventHolder.DocumentSaved += new EnvDTE._dispDocumentEvents_DocumentSavedEventHandler(OnDocumentSaved);
        }

        void OnDocumentSaved(EnvDTE.Document Document)
        {
            //fire up event to renew glyphs - how to force GetTags method?
            var temp = this.TagsChanged;
            if (temp != null)
                temp(this, new SnapshotSpanEventArgs(new SnapshotSpan() )); //how to foce get
        }

        IEnumerable<ITagSpan<RTextErrorTag>> ITagger<RTextErrorTag>.GetTags(NormalizedSnapshotSpanCollection spans)
        {
            foreach (SnapshotSpan span in spans)
            {
                foreach (var error in this.mSquiggleTagger.GetTaggedSpans(span))
                {
                    yield return new TagSpan<RTextErrorTag>(new SnapshotSpan(span.Start, 1), new RTextErrorTag());
                }
            }
        }

        public event EventHandler<SnapshotSpanEventArgs> TagsChanged; 
    }

我也有同样的需要-你找到解决办法了吗?谢谢