現有的Roslyn文檔非常薄,所以我希望有人知道如何做到這一點,或者至少讓我指向正確的方向。我嘗試了一些東西,包括以下格式化源代碼,但沒有奏效:在內存中格式化SyntaxTree的最佳方式是什麼?
var tree = CSharpSyntaxTree.ParseText(soureCode);
var root = (CSharpSyntaxNode)tree.GetRoot();
return root.ToFullString();
在這方面的任何幫助,將不勝感激....
現有的Roslyn文檔非常薄,所以我希望有人知道如何做到這一點,或者至少讓我指向正確的方向。我嘗試了一些東西,包括以下格式化源代碼,但沒有奏效:在內存中格式化SyntaxTree的最佳方式是什麼?
var tree = CSharpSyntaxTree.ParseText(soureCode);
var root = (CSharpSyntaxNode)tree.GetRoot();
return root.ToFullString();
在這方面的任何幫助,將不勝感激....
如果你只是試圖獲得您的SyntaxTree
的漂亮版本,你可以撥打電話root.NormalizeWhitespace().ToFullString();
。
NormalizeWhitespace()
是一個擴展方法,所以你必須補充:
using Microsoft.CodeAnalysis;
如果你正在尋找格式化內存中的樹,你可能尋找Formatter
類。這個類有幾個不同的重載,這取決於你是想格式化整個文檔還是僅僅是特定的跨度。
不幸的是,它需要Document
或Workspace
來格式化空白。如果有一個剛剛將通用格式化規則應用於樹的重載可能會很好。
美麗。非常感謝您的及時和有益的答案! –
你想格式化空白嗎?你有權訪問「文檔」,還是僅僅是一棵樹? – JoshVarty