用于缩进生成代码的API

问题描述 投票:0回答:2

在我当前的项目中,我们有几个代码生成器例程来帮助我们完成一些无需动脑筋的任务。从技术角度来看,一切都运行良好,因此这可能更多是出于好奇,而不是真正的问题:当我打开新生成的一段代码时,它(当然)没有正确缩进(尽管语法上是正确的)。

现在的问题是:是否有一个 API 可以用来缩进一段 C# 代码?就像我在 VS2010 中使用快捷键 Ctrl+E,D 时发生的情况一样。

谢谢!

为了澄清一下,我正在寻找这样的功能:

string GetProperlyFormattedCode(string notFormattedCode);

其中

notFormattedCode
是一段有效的 C# 源代码,函数的输出是应用格式化规则后的相同代码。换句话说,我正在寻找 Visual Studio 的“编辑 -> 高级 -> 格式选择”命令背后的功能。

c# api indentation generated-code
2个回答
5
投票

要缩进代码,只需使用 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 不会缩进任何内容。


1
投票

这个问题似乎可以回答:

如何从 C# 以编程方式调用“文档格式”?

简单来说就是使用Visual Studio的对象模型来调用format命令。

© www.soinside.com 2019 - 2024. All rights reserved.