用于缩进生成代码的API

时间:2012-02-02 18:44:40

标签: c# api indentation generated-code

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

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

谢谢!

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

string GetProperlyFormattedCode(string notFormattedCode);

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

2 个答案:

答案 0 :(得分:1)

这个问题好像回答:

How do you call "Document Format" programmatically from C#?

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

答案 1 :(得分:0)

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