Dan*_*eny 3 .net c# roslyn visual-studio-2015
我有一些构建类的代码:
return SyntaxFactory
.ClassDeclaration(name)
.AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword))
.WithMembers(GetProperties());
Run Code Online (Sandbox Code Playgroud)
这一切都有效,并输出我期望的类.我想为此添加一个XML文档:
/// <summary>
/// Some plain text here.
/// </summary>
Run Code Online (Sandbox Code Playgroud)
我不需要任何花哨的东西,只需要纯文本.我挣扎找到任何的例子,并一直通过各种重载Annotations,Trivia和方法的负荷挂SyntaxFactory(XmlComment,XmlElementStartTag,DocumentationCommentExterior,DocumentationCommentTrivia)没有快乐(讽刺的是,这些都没有XML注释!).我得到的最接近的东西是编译的,但在运行时崩溃了Unexpected false!
我的目标是.NET 4.5,使用VS 2015 RC和1.0.0-rc2的Roslyn.
您可以使用RoslynQuoter查看如何执行此操作:
SyntaxFactory.ClassDeclaration(
@"C")
.WithKeyword(
SyntaxFactory.Token(
SyntaxFactory.TriviaList(
SyntaxFactory.Trivia(
SyntaxFactory.DocumentationCommentTrivia(
SyntaxKind.SingleLineDocumentationCommentTrivia,
SyntaxFactory.List<XmlNodeSyntax>(
new XmlNodeSyntax[]{
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" ",
@" ",
SyntaxFactory.TriviaList()))),
SyntaxFactory.XmlElement(
SyntaxFactory.XmlElementStartTag(
SyntaxFactory.XmlName(
SyntaxFactory.Identifier(
@"summary"))),
SyntaxFactory.XmlElementEndTag(
SyntaxFactory.XmlName(
SyntaxFactory.Identifier(
@"summary"))))
.WithContent(
SyntaxFactory.SingletonList<XmlNodeSyntax>(
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
new []{
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" Some plain text here.",
@" Some plain text here.",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList()),
SyntaxFactory.XmlTextLiteral(
SyntaxFactory.TriviaList(
SyntaxFactory.DocumentationCommentExterior(
@"///")),
@" ",
@" ",
SyntaxFactory.TriviaList())})))),
SyntaxFactory.XmlText()
.WithTextTokens(
SyntaxFactory.TokenList(
SyntaxFactory.XmlTextNewLine(
SyntaxFactory.TriviaList(),
@"
",
@"
",
SyntaxFactory.TriviaList())))})))),
SyntaxKind.ClassKeyword,
SyntaxFactory.TriviaList()))))
Run Code Online (Sandbox Code Playgroud)
小智 6
试试这个:
var doc = @"
/// <summary>
/// Some plain text here.
/// </summary>
";
return SyntaxFactory.Comment(doc);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |