Я пытаюсь создать расширение для visual studio 2017.В частности, я хочу расширить IntelliSense для создания предложений и исправлений лампочек.Для этого я пытаюсь просмотреть синтаксис файла .cshtml (как разметки, так и кода C #) и проанализировать его, чтобы я мог получить такие вещи, как значения атрибутов и имена тегов, чтобы я знал, когда показывать светлуковицы.
Я просмотрел документацию на сайте MSDN.Я узнал, как можно заставить лампочки отображаться в определенном месте каретки, используя ITextBuffer и Snapshot для [ContentType = "text"].Но для моей проблемы я хочу, чтобы лампочка отображалась на основе значений атрибутов и тому подобное.Итак, я думаю, что мне придется работать с [ContentType = 'code'].Я не мог найти надлежащую документацию для этого.Я нашел эту статью
https://designprincipia.com/writing-a-visual-studio-extension-to-automate-code-generation-with-roslyn/
Она рассказывает, как вы можете показать лампочку, когда ваша каретка находится на имени метода, и создать файл класса с этим именем метода.Теперь это для файла C # и использует API Roslyn для получения синтаксического дерева и семантической модели кода C #.
Проблема сводится к этому
У меня есть файл .cshtml, и я хочу получить в нем синтаксическое дерево разметки и код C #. И, я думаю, я смогу получить его, потому что редактор по-разному выделяет разметку и код C # файла.Таким образом, это должно быть разбором.Но я не могу этого сделать.
Итак, для моего подхода я пытаюсь получить синтаксическое дерево.Я хочу знать, как это можно сделать.Пожалуйста, скажите мне, если это неправильное направление, и что еще я могу сделать.
PS: Это мой первый вопрос, поэтому, пожалуйста, скажите мне, если я оставил какую-либо информацию, а также я новичокRazor, так что, возможно, я что-то там упускаю.
Большое спасибо за ваше время.