How to add white space and/or format code?

2020-02-10 16:47发布

Given that I have created a symbol using SymbolFactory.CreateProperty, how would I add white space. Currently I get accessibility, modifiers, name, type etc. all stringed together when writing out document. Maybe I am writing it out wrong, or I need to add extra step to add white space? I use document.GetText() to write it out to console.

标签: roslyn
2条回答
▲ chillily
2楼-- · 2020-02-10 17:30

Nope, that's what you expect. Generated nodes don't have whitespace, with the intent you'll process it once you're done.

There are two options:

  1. Call .NormalizeWhitespace() on the nodes. This is an aggressive formatter that is really only useful if you're generating code you don't intend to be consumed by a human -- it makes the output "valid" but blows away any existing formatting.
  2. Call Formatter.Format(), from Microsoft.CodeAnalysis.Formatting. This is the fancy formatter which will attempt to preserve existing whitespace and such, and will only update the nodes that need fixing. This is best if you're updating user code and you don't want to stomp on it.
查看更多
Evening l夕情丶
3楼-- · 2020-02-10 17:36

I had the same issue, and I found this to work the best:

node.WithTrailingTrivia(SyntaxFactory.Space)

where node is a SyntaxToken of any kind.

查看更多
登录 后发表回答