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