获取Visual Studio扩展仅适用于特定文件类型

时间:2015-09-17 18:31:37

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

我正在为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注释的完成建议。这是在'''''''输入。我希望这只发生在python文件中。

其他出口是: 来自HandlerProvider

[Export]
[ContentType("py")]

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

来自Source Provider

[Export]
[ContentType("py")]

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

我可能还会补充一点,因为这是我第一次尝试扩展创建,因此我非常关注MSDN演练。结果虽然,我并不自信我可以解释代码的每一点(翻译:我不知道它的作用是多少)。

1 个答案:

答案 0 :(得分:0)

您正在导出您的提供商&amp; for(var i = 1; i <= 10; i++) { $('#currentgrid').append('<div class="ui-bar ui-bar-e">Info'+i+'</div>'); } [ContentType("text")]的听众。

不要那样做。

此外,您的第二个[ContentType("py")]属性将作为该类本身导出,这是无用的。