在我当前的项目中,我们有几个代码生成器例程来帮助我们完成一些无需动脑筋的任务。从技术角度来看,一切都运行良好,因此这可能更多是出于好奇,而不是真正的问题:当我打开新生成的一段代码时,它(当然)没有正确缩进(尽管语法上是正确的)。
现在的问题是:是否有一个 API 可以用来缩进一段 C# 代码?就像我在 VS2010 中使用快捷键 Ctrl+E,D 时发生的情况一样。
为了澄清一下,我正在寻找这样的功能:
string GetProperlyFormattedCode(string notFormattedCode);
其中
notFormattedCode
是一段有效的 C# 源代码,函数的输出是应用格式化规则后的相同代码。换句话说,我正在寻找 Visual Studio 的“编辑 -> 高级 -> 格式选择”命令背后的功能。
要缩进代码,只需使用 Microsoft.CodeAnalysis.CSharp nuget 包和 .NET Framework 4.6+。示例代码:
public string ArrangeUsingRoslyn(string csCode) {
var tree = CSharpSyntaxTree.ParseText(csCode);
var root = tree.GetRoot().NormalizeWhitespace();
var ret = root.ToFullString();
return ret;
}
单行:
csCode = CSharpSyntaxTree.ParseText(csCode).GetRoot().NormalizeWhitespace().ToFullString();
您还可以使用 NArrange 对 cs 文件中的方法进行排序、组织用途、创建区域等。请注意,NArrange 不会缩进任何内容。