1

Я пытаюсь зарегистрировать пользовательский тип содержимого, похожий на this question на форумах MSDN: Я хочу зарегистрировать пользовательское расширение, которое по существу HTML-файл, например:Регистрация типа содержимого HTML с помощью редактора 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, Я могу получить выделение HTML в файлах .mycustom, к сожалению, я не получаю ничего другого, в частности, HTML intellisense. Из приведенной выше ссылки кажется, что единственный способ заставить Visual Studio распознавать пользовательские расширения как специфический тип редактора, но мне придется взломать реестр (или, более конкретно, предоставить его с помощью атрибута ProvideEditorExtension, но он применим только к VSPackage).

Таким образом, мой вопрос в основном заключается в альтернативном способе регистрации пользовательского расширения в редакторе программным способом, но без создания для него пользовательского VSPackage? Конечно, кроме взлома реестра.

(! Я мог бы совершенно неправильно с подходом, в этом случае ваша помощь очень ценится)

ответ

2

Самый простой способ заключается в использовании техника предназначалась здесь:

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

Это эффективно «взламывает реестр», но поддерживается. Вы просто обертываете нужные ключи в файле .pkgdef (по существу, в файле .reg), который может содержаться в расширении редактора.

+0

Конечно! Мне полностью удалось избежать того, что pkgdef не требует реальной реализации пакета! Благодаря! –

+0

Хех, нашел этот старый чат Twitter: https://twitter.com/Schabse/status/390564739081728000 –

+0

Да, это немного вводит в заблуждение. :-) –