Я работаю над расширением классификатора редактора для классических исходных файлов Visual Basic (файлы модулей и классов). Проект был создан с использованием шаблона проекта классификатора редактора из пакета Visual Studio 2012 SDK. Мастер создал три файла кода: один для классификатора, один для формата классификатора и -provider, а другой - определения классификации. Я сделал следующие изменения последней для того, чтобы связать *.bas
и *.cls
файлов на пользовательский классификатор ...Не удается связать известные расширения файлов с пользовательским редактором классификатора
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Utilities;
internal static class MyEditorClassifierClassificationDefinition
{
[Export(typeof(ClassificationTypeDefinition))]
[Name("MyEditorClassifier")]
internal static ClassificationTypeDefinition MyEditorClassifierType = null;
[Export]
[Name("custom")]
[BaseDefinition("code")]
internal static ContentTypeDefinition MyContentDefinition = null;
[Export]
[FileExtension(".bas")]
[ContentType("custom")]
internal static FileExtensionToContentTypeDefinition MyModuleFileExtensionDefinition = null;
[Export]
[FileExtension(".cls")]
[ContentType("custom")]
internal static FileExtensionToContentTypeDefinition MyClassFileExtensionDefinition = null;
}
Проблема заключается в том, что Visual Studio не вызывает мой классификатор файлы, имеющие *.bas
или *.cls
расширения, вместо этого используется встроенный редактор для Visual Basic. Я уже тестировал свой редакторский классификатор, используя расширение пользовательского файла; в этом случае классификатор работает так, как ожидалось. Я хотел бы знать, если можно изменить классификатор для известных расширений файлов.
Мы уже определили .bas и .cls для сопоставления с основным типом содержимого вместе со стандартным расширением .vb. Что вы на самом деле пытаетесь сделать здесь? Почему вы не просто определяете свой классификатор по типу «Основной»? –
Я знаю, что эти типы файлов сопоставляются с базовым типом содержимого; и я также попытался использовать «Basic» в качестве базового определения для моего классификатора, но он тоже не работал. Кроме того, редактор Basic не корректно обрабатывает файлы .bas и .cls; эти файлы имеют заголовок, содержащий метаданные (я хотел бы использовать Projection, чтобы скрыть эти заголовки из редактора, но это мечта о будущем). – Matze