Как написать расширение Visual Studio для шаблона или языка разметки, поддерживающего встроенные фрагменты кода

#visual-studio #visual-studio-2010 #intellisense #vsx #viewengine

#visual-studio #visual-studio-2010 #intellisense #vsx #viewengine

Вопрос:

Возможно ли написать расширение для Visual Studio 2010, которое обеспечивает подсветку синтаксиса, intellisense, выделение контуров и т.д. Для пользовательского шаблона или языка разметки, поддерживающего встроенные фрагменты кода, аналогично инструменту для Razor в ASP.NET MVC 3? Можно ли это сделать без использования частных API, без доступа к внутренней документации Microsoft и, самое главное, без переопределения подсветки синтаксиса, intellisense и т.д. для встроенного языка программирования (т.е. C # или VB)?

В документации SDK, кажется, предполагается, что редактор Visual Studio поддерживает встроенные языки через буферы проекции, но на самом деле там не приводится никаких подробностей или примеров. Некоторые из «устаревших интерфейсов взаимодействия, используемых для редактора и языковых служб» в Microsoft.VisualStudio.TextManager.Взаимодействие также представляется актуальным, например, IVsTextBufferCoordinator, но в документации мало говорится о том, как все эти части сочетаются друг с другом.

При условии, что буферы проекции действительно выполняют то, на что я надеюсь, где я могу подключиться к редактору, чтобы заменить обычный текстовый буфер буфером проекции?

Может быть, у кого-нибудь есть дополнительная информация об API, имеющих отношение к поддержке встроенных языков, или может указать мне правильное направление?

Комментарии:

1. Я также ищу указания, как это сделать. Вы когда-нибудь находили какие-либо ресурсы по этому вопросу?

2. Нет, и в конце концов я отказался от своего проекта из-за плачевного состояния соответствующей документации SDK (и функциональности SDK?).

Ответ №1:

Вам следует взглянуть на https://github.com/SparkViewEngine/SparkSense в качестве примера. Оно было создано для движка Spark View engine для обеспечения intellisense для VS 2010.

«SparkSense — это плагин для Visual Studio 2010, который обеспечивает поддержку различных инструментов и функции повышения производительности при использовании Spark в качестве механизма просмотра для различных MVC-фреймворков, включая ASP.NET MVC»

Комментарии:

1. Спасибо за указатель. Однако, похоже, что SparkSense реализует свой собственный ограниченный вид «intellisense» для встроенных фрагментов кода. Я думаю, Роберт называет это «завершением типа». Оно не использует языковую службу Visual Studio C # и это не полный intellisense, который, например, доступен в Razor pages.

Ответ №2:

вы можете написать собственное расширение редактора, смотрите Эту статью:http://www.devx.com/VS_2010/Article/45058

И чтобы понять, как это работает:http://msdn.microsoft.com/en-us/library/dd885240 (v= VS.100).aspx

Проведите исследование о «Платформе управляемой расширяемости (MEF)»

Вы можете скачать пример для языка Оок здесь

Комментарии:

1. Я хорошо знаком с доступной документацией SDK, и мой вопрос фактически содержит ссылку на ту же страницу MSDN, на которую вы ссылались.