В вашем примере кода вы используете ProvideLanguageExtensionAttribute
, чтобы связать определенное расширение файла с вашим языковым сервисом. Класс ProvideLanguageExtensionAttribute
наследует класс RegistrationAttribute
, который может использоваться для регистрации информации о пакете во время установки (работает для Visual Studio 2010 и любой новой версии). Я полагаю, Visual Studio не будет отражать этот атрибут в любое время, когда загружается языковая служба, вместо этого он считывает информацию из реестра ...
Другим хорошим примером использования RegistrationAttribute
является ProvideFileFilterAttribute, который может быть найденный в Проект Python для Visual Studio проект опубликован на codeplex. Он используется для расширения списка фильтров файлов диалогового окна открытого файла Visual Studio, и он может дать вам представление о том, как может выглядеть реализация атрибута регистрации ... и я бы сказал, что вы можете легко найти служба, которая может добавлять или удалять расширения файлов, которые будут получены IDE при следующем запуске ...
Я также работаю над расширением пользовательского языка, которое регистрирует как расширения файлов, так и -фильтры; поэтому я просто просмотрел реестр, чтобы найти информацию, предоставленную мной через атрибуты; и это мои выводы ...
расширений файлов, которые появляются в открытый файл dialog's список фильтров сохраняются в следующем ключе ...
HKCU\Software\Microsoft\VisualStudio\
{version}_Config\Languages\File Extensions\{extension}
Причем значение по умолчанию key's содержит GUID
службы языка ...
Default => {xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx}
Кроме того, there's другой ключ, но я не уверен, что если значения получены из атрибутов ...
HKCU\Software\Microsoft\VisualStudio\
{version}_Config\Diff\SupportedContentTypes
расширение файла, которые связаны с проектом завода и расширение редактора хранятся в следующем разделе ...
HKCU\Software\Microsoft\VisualStudio\
{version}_Config\Projects\{project-factory}\FileExtensions\{extension}
Причем ключ содержит GUID
от проекта завода. Ключ содержит одно значение, указывающее на редактор завод ...
EditorFactoryNotify => {xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx}
В моей службе языка я также заменяю GetFileExtensions
- и GetFormatFilterList
методы моей LanguageService
реализации ...
ли вы получите в любом месте с это?Я пытаюсь сделать то же самое, но не смог найти динамическую информацию о назначении расширений файлов языковой службе. – Sam