3

在我目前的项目中,我们有几个代码生成器例程来帮助我们完成一些无意识的任务。从技术的角度来看,一切都很好,所以这可能更像是一个好奇而不是一个真正的问题:当我打开一段新生成的代码时,它(当然)没有正确缩进(尽管在语法上是正确的)。

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

谢谢!

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

string GetProperlyFormattedCode(string notFormattedCode);

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

4

2 回答 2

4

要缩进代码,只需使用 Microsoft.CodeAnalysis.CSharp nuget 包和 .NET 框架 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 不会缩进任何内容。

于 2017-11-07T08:07:19.600 回答
1

这个问题似乎可以回答:

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

简而言之,就是使用 Visual Studio 的对象模型来调用 format 命令。

于 2012-02-02T19:43:23.147 回答