【发布时间】:2017-09-08 00:37:41
【问题描述】:
有没有一种方法可以检测当前的编程语言并禁用基于该语言的扩展?
我正在创建一个仅在 C++ 版本中兼容的 VSIX 包。我可以以编程方式检测当前的编程语言并响应不支持的语言而不打开我的对话框,但我觉得应该有一个属性或其他东西可以启用/禁用某种语言的扩展。
【问题讨论】:
标签: visual-studio vsix vsixmanifest
有没有一种方法可以检测当前的编程语言并禁用基于该语言的扩展?
我正在创建一个仅在 C++ 版本中兼容的 VSIX 包。我可以以编程方式检测当前的编程语言并响应不支持的语言而不打开我的对话框,但我觉得应该有一个属性或其他东西可以启用/禁用某种语言的扩展。
【问题讨论】:
标签: visual-studio vsix vsixmanifest
您可以为 C++ 创建自定义 UI 上下文规则并使用它来加载您的包。对于 C# 和 VB,它看起来像这样:
[ProvideAutoLoad(UIContexts.LoadContext)]
[ProvideUIContextRule(UIContexts.LoadContext,
"RightFileTypeOpen",
"(CSharpFileOpen | VBFileOpen)",
new[] { "CSharpFileOpen", "VBFileOpen" },
new[] { "ActiveEditorContentType:CSharp", "ActiveEditorContentType:Basic" })]
有关详细信息,请参阅 MSDN 上的 How to: Use Rule-based UI Context for Visual Studio Extensions 和 Mads Kristensen 的 sample。
【讨论】: