[英]How to build a Roslyn syntax tree from scratch?
我想做一些非常基本的代碼生成(將服務API規范轉換為某些C#類以與服務進行通信)。 我發現這個問題似乎表明我可以調用Syntax.CompilationUnit()
來創建一個新的CompilationUnityntax
,但是我無法編譯這個代碼; 我找不到任何我能找到的語法類的CompilationUnit
方法(我也找不到任何文檔):(
CSharpSyntaxTree.Create
似乎需要一個CSharpSyntaxNode
,但我無法弄清楚如何創建其中一個:/
我正在使用VS 2015 RC和最新的Microsoft.CodeAnalysis NuGet包(1.0.0-rc2)。
似乎Syntax
現在是SyntaxFactory
:
var comp = SyntaxFactory.CompilationUnit()
.AddMembers(
SyntaxFactory.NamespaceDeclaration(SyntaxFactory.IdentifierName("ACO"))
.AddMembers(
SyntaxFactory.ClassDeclaration("MainForm")
.AddMembers(
SyntaxFactory.PropertyDeclaration(SyntaxFactory.ParseTypeName("System.Windows.Forms.Timer"), "Ticker")
.AddAccessorListAccessors(
SyntaxFactory.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken)),
SyntaxFactory.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration).WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken))),
SyntaxFactory.MethodDeclaration(SyntaxFactory.ParseTypeName("void"), "Main")
.AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword))
.WithBody(SyntaxFactory.Block())
)
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.