Come posso trovare quale numero di riga nel file di origine è stata trovata la dichiarazione?VisitClassDeclaration node.Identifier in Roslyn
5
A
risposta
5
Disclaimer: Lavoro per Microsoft nel team di Roslyn.
È possibile utilizzare il metodo ISyntaxTree.GetLineSpan()
per convertire in un numero di riga. Ad esempio, dato un "simbolo" ISymbol
, è possibile ottenere la posizione di partenza della prima definizione con:
var loc = symbol.Locations.First();
var lineSpan = loc.SourceTree.GetLineSpan(loc.SourceSpan,
usePreprocessorDirectives: false);
var line = lineSpan.StartLinePosition.Line;
var character = lineSpan.StartLinePosition.Character;
Dal titolo, sembra che si sta iniziando con un SyntaxNode
, quindi si può semplicemente utilizzare il Span
proprietà direttamente.
So che si tratta di un progetto a coda lunga, ma esiste un collegamento alla documentazione online? – casperOne
Non abbiamo ancora la documentazione nel formato MSDN. Il più vicino che abbiamo in questo momento sono i vari documenti fino a http://msdn.com/roslyn –
non vedo l'StartLinePosition qui 'public class MyVisitor: SyntaxRewriter { protected override SyntaxNode VisitClassDeclaration (nodo ClassDeclarationSyntax) { Console.WriteLine (node.Identifier.ValueText); return null; } } ' –