В общем, инфраструктура вокруг анализаторов была создана, чтобы позволить им работать вне Visual Studio (например, из командной строки или как часть системы сборки CI).Вот почему не так много простых способов взаимодействия между Roslyn и Visual Studio.Однако есть несколько различных методов расширения , которые могут помочь вам преодолеть разрыв между Visual Studio и Roslyn.
Я считаю, что вам необходимо:
- ДобавитьNugetPackage с
Install-Package Microsoft.CodeAnalysis.EditorFeatures.Text
- Добавьте использование
using Microsoft.CodeAnalysis.Text;
к вашему анализатору
Если у вас есть доступ к Document
, вы можете использовать .TryGetText(out SourceText)
для получения SourceText
для документа.
Тогда вы можете использовать метод расширения FindCorrespondingEditorTextSnapshot
, чтобы получить ITextSnapshot
.
Мои знания здесь немного шатки, но я не уверен, что вы можете получитьITextBuffer
, потому что ваш анализатор будет часто работать, когда редактор для данного файла не открыт, поэтому для него не было создано ITextBuffer
.