[英]How to build a Roslyn syntax tree from scratch?
I want to do some very basic code-gen (converting a service API spec to some C# classes for communicating with the service). 我想做一些非常基本的代码生成(将服务API规范转换为某些C#类以与服务进行通信)。 I found this question that seems to suggest I can call Syntax.CompilationUnit()
to create a new CompilationUnityntax
, however I'm unable to make this code compile; 我发现这个问题似乎表明我可以调用Syntax.CompilationUnit()
来创建一个新的CompilationUnityntax
,但是我无法编译这个代码; I can't find a CompilationUnit
method on any of the Syntax classes I can find (nor can I locate any docs on this) :( 我找不到任何我能找到的语法类的CompilationUnit
方法(我也找不到任何文档):(
CSharpSyntaxTree.Create
appears to need a CSharpSyntaxNode
, but I can't figure out how to create one of them either :/ CSharpSyntaxTree.Create
似乎需要一个CSharpSyntaxNode
,但我无法弄清楚如何创建其中一个:/
I'm using VS 2015 RC with the latest Microsoft.CodeAnalysis NuGet package (1.0.0-rc2). 我正在使用VS 2015 RC和最新的Microsoft.CodeAnalysis NuGet包(1.0.0-rc2)。
Seems that Syntax
is now SyntaxFactory
: 似乎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.