Повторяющееся расширение Visual Studio для одного языка

Я новичок в Extension, пишу VS-расширения и нахожу информацию по этому вопросу, например, распутывание 3-х шариков пряжи. Я прочитал довольно много на сайте MSDN, а также сделал много неудачных поисков в Google.

Моя цель - написать расширение для Visual Studio (с использованием MEF и MPF), чтобы улучшить поддержку языка, который был создан третьей стороной. Сторонний разработчик уже имеет расширение VS, которое поддерживает отладку, а также минимальный Intellisense и обеспечивает цветность. Я не хочу терять их поддержку отладки, но я хочу улучшить все остальные аспекты опыта.

Насколько я понимаю, данный язык (тип контента) может поддерживаться только одним LanguageService и / или набором сервисов Editor через MEF (раскрашивание, intellisense и т. Д.). Это правильно? Можно ли заменить существующий Intellisense и добавить другие функции?

1 ответ

Решение

Да, приложив немного усилий, вы можете обойти регистрацию их языковой службы и зарегистрировать собственную для тех же расширений файлов. Языковая служба практически не зависит от механизма отладки (я говорю почти потому, что пара небольших вещей, таких как размещение точек останова во время разработки, проходит через некоторые объекты языковой службы, но это не очень важно).

Я предлагаю полностью заменить их языковой сервис своим, что будет намного проще, чем пытаться расширить их, не нарушая его, особенно без доступа к их источнику для внесения изменений.

Большинство регистраций связаны с записями в реестре, например, на HKCU\Software\Microsoft\VisualStudio\14.0_Config\, Это не относится к компонентам MEF, но компоненты MEF, как правило, фильтруются по типу контента, который определяется языковой службой, поэтому с вами все будет в порядке, пока вы определяете другой тип контента в вашей языковой службе и привязываете свои материалы к тот.

Вы можете зарегистрировать свою языковую службу для тех же расширений файлов, но с более высоким приоритетом (через ProvideEditorExtension атрибут вашего языкового пакета услуг). Тогда все зависит от вашей языковой службы, и вам не нужно беспокоиться о том, что они мешают (если они ведут себя с типами контента, которые не являются его собственными, что и должно).

Наконец, удачи! Написание (хорошего) языкового сервиса с нуля может быть долгим путешествием:-)

Другие вопросы по тегам