EnvDTE.ProjectItem'den Roslyn'in SyntaxTree sürümünü elde etmenin en iyi yolu nedir? Diğer yol için bir yöntem buldum (Roslyn'in ProjectItem belgesine).VSIX komutundan Roslyn çağrılıyor
Açılan belgeden çağrılan VSIX komutunu aldım ve burada Roslyn'in sözdizimi ağacını denemek istiyorum.
Bu kod çalışır, ancak bana garip görünüyor:
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))
aktif belgeden Roslyn en Belgesi almak için daha iyi bir yolu var mı?
AsText uzantısı yöntemi çok yararlı görünüyor. Maalesef henüz ITextSnapshot dosyasını bulmanın bir yolunu bulamadım. Bir ipucu? – maliger
bunu buldu [link] (http://stackoverflow.com/questions/2413530/find-an-ivstextview-or-iwpftextview-for-a-given-projectitem-in-vs-2010-rc-exten) – maliger