Что является лучшим способом получить SyntaxTree от Rosln из EnvDTE.ProjectItem? Я нашел какой-то метод по-другому (документ Рослина в ProjectItem).вызов Roslyn из команды VSIX
Я получил команду VSIX, вызванную из открытого документа, и я хотел бы поэкспериментировать с деревом синтаксиса Roslyn.
Этот код работает, но выглядит неловко мне:
var pi = GetProjectItem();
var piName = pi.get_FileNames(1);
var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel));
var workspace = componentModel.GetService<Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace>();
var ids = workspace.GetOpenDocumentIds();
var id1 = ids.First(id => workspace.GetFilePath(id) == piName);
Microsoft.CodeAnalysis.Solution sln = workspace.CurrentSolution;
var doc = sln.GetDocument(id1);
//var w = await doc.GetSyntaxTreeAsync();
Microsoft.CodeAnalysis.SyntaxTree syntaxTree;
if (doc.TryGetSyntaxTree(out syntaxTree))
Есть ли лучший способ получить документ Рослин от активного документа?
Метод расширения AsText выглядит очень полезным. К несчастью, я еще не нашел способ получить этот ITextSnapshot. Любая подсказка? – maliger
нашел это [ссылка] (http://stackoverflow.com/questions/2413530/find-an-ivstextview-or-iwpftextview-for-a-given-projectitem-in-vs-2010-rc-exten) – maliger