【问题标题】:Get Visual Studio Extension to only operate with specific file types获取 Visual Studio 扩展以仅对特定文件类型进行操作
【发布时间】:2015-09-17 18:31:37
【问题描述】:

我正在为 Visual Studio 创建一个非常简单的扩展。我试图使扩展仅在使用 python 文件类型时才处于活动状态。我找到了this 并尝试将其应用于我的情况,但我认为我遗漏了一些东西。该扩展程序可以与 python 文件一起正常工作,但当我希望它忽略它们时,它也可以与其他文件类型保持活动状态。

到目前为止,我按照演练制作了这个课程:

static class FileAndContentTypeDefinitions
{
    [Export]
    [Name("py")]
    [BaseDefinition("text")]
    internal static ContentTypeDefinition hidingContentTypeDefinition;

    [Export]
    [FileExtension(".py")]
    [ContentType("py")]
    internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;

}

然后,在 SourceProvider 和 HandlerProvider 中我有:

[Export]
[ContentType("py")]

这使 python 文件类型能够工作,但在打开其他文件类型时不会禁用扩展。有没有办法做到这一点?

编辑:我意识到这太模棱两可了。该扩展根据前面出现的方法签名(如果适用)为 python doc cmets 提供了完成建议。这在键入“”时触发。我希望这只发生在 python 文件中。

其他出口是: 来自 HandlerProvider

[Export]
[ContentType("py")]

[Export(typeof(IVsTextViewCreationListener))]
[Name("token completion handler")]
[ContentType("text")]
[TextViewRole(PredefinedTextViewRoles.Editable)]

来自源提供者

[Export]
[ContentType("py")]

[Export(typeof(ICompletionSourceProvider))]
[ContentType("text")]
[Name("token completion")]

我还要补充一点,因为这是我第一次涉足扩展创建,所以我非常密切地遵循了 MSDN 演练。结果,我不相信我能解释代码的每一点(翻译:我不知道它做了什么)。

【问题讨论】:

  • “禁用扩展”是什么意思?你想防止什么?
  • 啊,好点。所以这个扩展为python doc cmets提供了一个补全,当输入'''时触发。我希望这只发生在 python 文件中。
  • 请向我们展示您导出的服务。
  • 嗨@SLaks 我刚刚更新了我的问题。希望对您有所帮助!

标签: c# visual-studio mef visual-studio-extensions file-type


【解决方案1】:

您正在为 [ContentType("text")][ContentType("py")] 导出您的提供程序和侦听器。

不要那样做。

另外,您的第二个 [Export] 属性将导出为该类本身,这是无用的。

【讨论】:

  • 你能扩展一下你的第二个陈述吗?哪个第二个出口?你的意思是两个?
  • 我的意思是没有指定VS导入的接口。
  • 试图只声明 [ContentType("py")] 并删除额外的导出调用。当我现在输入“”时什么也没有发生。可能是其他地方的一些其他问题,但现在我需要将它们添加回来以恢复功能。
  • @IanPanzica:给我看看你目前的出口。
  • 它们和我现在在问题中列出的一样。我尝试删除两个空的 [Export] 语句以及将 ContentType 设置为“py”(组合和每个独占),并且在所有情况下,都没有出现完成建议。因此,就目前而言,出口已恢复原状。在相关说明中,我不明白将 ContentType 从“text”更改为“py”会如何破坏它,因为“py”的基础定义是“text”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多