启用某种语言的 VSIX 扩展?

Enable a VSIX extension in a certain language?

是否有检测当前编程语言并禁用基于该语言的扩展程序的方法?

我正在创建一个仅在 C++ 构建中兼容的 VSIX 程序包。我可以通过编程方式检测当前的编程语言并响应不支持的语言,而不是打开我的对话框,但我觉得应该有一个 属性 或 enable/disable 某种语言的扩展。

您可以为 C++ 创建自定义 UI 上下文规则并使用它来加载您的包。 C# 和 VB:

看起来像这样
[ProvideAutoLoad(UIContexts.LoadContext)]
[ProvideUIContextRule(UIContexts.LoadContext,
    "RightFileTypeOpen",
    "(CSharpFileOpen | VBFileOpen)",
    new[] { "CSharpFileOpen", "VBFileOpen" },
    new[] { "ActiveEditorContentType:CSharp", "ActiveEditorContentType:Basic" })]

有关详细信息,请参阅 How to: Use Rule-based UI Context for Visual Studio Extensions on MSDN and Mads Kristensen's sample