2011-10-26 26 views

回答

5

聲明:我在Roslyn團隊爲微軟工作。

您可以使用ISyntaxTree.GetLineSpan()方法轉換爲行號。例如,給定一個ISymbol「符號」,就可以得到與第一定義的開始位置:

var loc = symbol.Locations.First(); 
var lineSpan = loc.SourceTree.GetLineSpan(loc.SourceSpan, 
    usePreprocessorDirectives: false); 
var line = lineSpan.StartLinePosition.Line; 
var character = lineSpan.StartLinePosition.Character; 

從標題,它看起來像你開始用SyntaxNode,所以你可以只使用Span屬性直接。

+0

我知道這是一個長尾項目,但是有鏈接到在線文檔嗎? – casperOne

+0

我們還沒有MSDN格式的文檔。我們目前最接近的是各種證件達在http://msdn.com/roslyn –

+0

我沒有看到StartLinePosition這裏 '公共類MyVisitor:SyntaxRewriter { 保護覆蓋SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax節點) { Console.WriteLine(node.Identifier.ValueText); 返回null; } }' –