2015-12-15 100 views
2

現有的Roslyn文檔非常薄,所以我希望有人知道如何做到這一點,或者至少讓我指向正確的方向。我嘗試了一些東西,包括以下格式化源代碼,但沒有奏效:在內存中格式化SyntaxTree的最佳方式是什麼?

var tree = CSharpSyntaxTree.ParseText(soureCode); 
var root = (CSharpSyntaxNode)tree.GetRoot(); 
return root.ToFullString(); 

在這方面的任何幫助,將不勝感激....

+0

你想格式化空白嗎?你有權訪問「文檔」,還是僅僅是一棵樹? – JoshVarty

回答

3

如果你只是試圖獲得您的SyntaxTree的漂亮版本,你可以撥打電話root.NormalizeWhitespace().ToFullString();

NormalizeWhitespace()是一個擴展方法,所以你必須補充:

using Microsoft.CodeAnalysis; 

如果你正在尋找格式化內存中的樹,你可能尋找Formatter類。這個類有幾個不同的重載,這取決於你是想格式化整個文檔還是僅僅是特定的跨度。

不幸的是,它需要DocumentWorkspace來格式化空白。如果有一個剛剛將通用格式化規則應用於樹的重載可能會很好。

+0

美麗。非常感謝您的及時和有益的答案! –

相關問題