在没有包的情况下使用HTML编辑器注册HTML派生的内容类型?

时间:2013-12-21 00:15:10

标签: visual-studio-extensions vsx visual-studio-sdk languageservice

我正在尝试注册自定义内容类型,类似于MSDN论坛上的this question:我想注册一个基本上是HTML文件的自定义扩展名,例如:

[Export]
[DisplayName("My Custom Markup")]
[Name("mycustom")
[BaseDefinition("html")]
internal static ContentTypeDefinition MyCustomContentType;

[Export]
[FileExtension(".mycustom")]
[ContentType("mycustom")]
internal static FileExtensionToContentTypeDefinition MyCustomFileExtensionDefinition;

因此,通过将BaseDefinition指定为html,我可以在.mycustom文件中获得HTML突出显示,遗憾的是我没有得到任何其他内容,特别是HTML intellisense。从上面的链接看来,让Visual Studio将自定义扩展识别为特定编辑器类型的唯一方法,但是我必须破解注册表(或者更具体地说,通过ProvideEditorExtension属性提供这个,但它是仅适用于VSPackage)。

所以我的问题是,基本上,是否有另一种方法可以通过编程方式将自定义扩展注册到编辑器,但是没有为它创建自定义VSPackage?当然,除了黑客入侵注册表外?

(我的方法完全错了,在这种情况下,非常感谢你的帮助!)

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用此处演示的技术:

http://blogs.msdn.com/b/noahric/archive/2010/03/01/new-extension-css-is-less.aspx

这实际上是“黑客入侵注册表”,但是以受支持的方式。您只需将所需的密钥包装在.pkgdef文件(实际上是.reg文件)中,该文件可以包含在编辑器扩展中。