我有一个 Visual Studio 扩展,它在同一个 VSIX 中包含一个包和一个标记器。
当 Package 被加载时,它会初始化一些东西,包括一个记录器。标注器使用记录器。这一切都对我有用,但是在一台客户机器上,标记器在包之前加载,并且由于记录器尚未初始化而崩溃。
我如何向 Visual Studio 表示它应该始终在加载标记器之前加载包?
包看起来像这样:
[ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]
public sealed class EntrianInlineWatchPackage : Package ...
标记器看起来像这样:
[Export(typeof(IViewTaggerProvider))]
[ContentType("C/C++")]
[TextViewRole(PredefinedTextViewRoles.Document)]
[TagType(typeof(ValueTag))]
public class ValueTaggerProvider : IViewTaggerProvider
{
[Import]
internal IClassifierAggregatorService AggregatorService;
public ITagger<T> CreateTagger<T>(ITextView textView, ITextBuffer buffer) where T : ITag
{
...
return buffer.Properties.GetOrCreateSingletonProperty("com.entrian.ValueTagger", delegate () {
IClassifier classifier = AggregatorService.GetClassifier(buffer);
return new ValueTagger(classifier, textView, buffer) as ITagger<T>;
}) as ITagger<T>;
vsixmanifest 如下所示:
<Content>
<VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage>
<MefComponent>|%CurrentProject%|</MefComponent>
</Content>
谢谢!