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

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

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

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

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


person Stephan Tolksdorf    schedule 01.05.2011    source источник
comment
Я также ищу указатели для этого. Вы когда-нибудь находили какие-либо ресурсы по этому поводу?   -  person autonomatt    schedule 17.04.2012
comment
Нет, и в конце концов я отказался от своего проекта из-за плачевного состояния соответствующей документации SDK (и функциональности SDK?).   -  person Stephan Tolksdorf    schedule 17.04.2012


Ответы (2)


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

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

person Jason Rowe    schedule 01.05.2011
comment
Спасибо за указатель. Однако похоже, что SparkSense реализует свой собственный ограниченный вид intellisense для встроенных фрагментов кода. Я думаю, Роберт называет это завершением типа. Он не использует повторно языковую службу Visual Studio C # и не является полным intellisense, как, например, доступно на страницах Razor. - person Stephan Tolksdorf; 02.05.2011

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

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

Изучите тему «Фреймворк управляемой расширяемости (MEF)»

Вы можете загрузить пример языка Ook здесь

person Arnaud F.    schedule 01.05.2011
comment
Я хорошо осведомлен о доступной документации SDK, и мой вопрос фактически содержит ссылку на ту же страницу MSDN, которую вы связали. - person Stephan Tolksdorf; 01.05.2011