Roslyn SDK预览中的代码格式

Pra*_*hta 12 c# roslyn

在早期版本(Roslyn CTP)中,我使用以下代码来格式化我生成的代码,它工作得很好:

SyntaxNode.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot()
Run Code Online (Sandbox Code Playgroud)

使用新的Roslyn版本它不再具有,那么新版本(SDK预览版)中上述代码的等价物是什么?

and*_*dyp 11

您可以SyntaxNodes使用Microsoft.CodeAnalysis.Formatting.Formatter这样的格式进行格式化(如果您有工作区):

using Microsoft.CodeAnalysis.Formatting;

var formattedResult = Formatter.Format(syntaxNode, workspace);
Run Code Online (Sandbox Code Playgroud)

编辑:正如Jeroen在评论中写道,如果您没有工作区并且不需要特定于工作区的格式设置,您只需创建一个:

var workspace = MSBuildWorkspace.Create();
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`MSBuildWorkspace.create()`来使用标准设置对其进行格式化.如果需要特定于工作空间的格式设置,则只需要相关工作空间. (2认同)
  • 尝试“new AdhocWorkspace()” (2认同)