我想做一些非常基本的代码生成(将服务API规范转换为某些C#类以与服务进行通信)。我发现this question似乎建议我可以致电Syntax.CompilationUnit()
来创建新的CompilationUnityntax
,但是我无法编译此代码;我无法在我能找到的任何语法类上找到CompilationUnit
方法(我也找不到任何文档):(
CSharpSyntaxTree.Create
似乎需要CSharpSyntaxNode
,但我无法弄清楚如何创建其中一个:/
我使用VS 2015 RC和最新的Microsoft.CodeAnalysis NuGet包(1.0.0-rc2)。
答案 0 :(得分:8)
似乎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())
)
)
);