如何以编程方式刷新 VSIX 扩展中的 VS 代码编辑器

How to programmaticaly refresh VS code editor in VSIX extension

如何强制刷新 Visual Studio 的代码编辑器?

我有一个 VSIX 扩展,它通过 VS 标记机制实现自定义着色。该扩展有一些设置,例如关闭着色。它们通过 DialogPage 机制集成到 VS 设置中,就像在 MSDN 示例中一样。我在我的 ITaggerProvider CreateTagger 实现中使用它们来决定我是否应该使用标记器。

当我更改颜色设置时,打开的文档的颜色没有刷新。但我可以关闭并重新打开它们,然后根据新设置的值对文档进行着色。 有没有办法告诉 Visual Studio 刷新代码编辑器并为其重新创建标记器?

您可以尝试关闭文档,然后重新打开。

    string path = dte.ActiveDocument.FullName;
    dte.ActiveDocument.Save();
    dte.ActiveDocument.Close();
    dte.ItemOperations.OpenFile(path);

编辑: 更好的方法是引发在标记器 class(实现 ITagger 接口)中声明的事件。