VS Code C# 大括号不在新行上

For*_*eam 5 c# formatting braces omnisharp visual-studio-code

找不到使格式化程序将大括号放在同一行的方法。默认格式化程序似乎完全忽略与新行相关的所有设置。

有些人推荐 C# FixFormat 扩展,但现在它已被弃用并从市场上消失。我也找到了这个扩展,但它从一开始就清楚地表明它不会有帮助。

Before

public class ClassName {
    public void CallMethod() { 
        this.LongUglyMethod("1234567890", "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    }
}

After

public class ClassName
{
    public void CallMethod()
    {
        this.LongUglyMethod(
            "1234567890",
            "abcdefghijklmnopqrstuvwxyz",
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

默认格式化程序似乎完全忽略这些设置。我试图把它们放在任何地方(正如这里所说的那样),但它只考虑与新行无关的所有内容。

{
    "MSBuild": {
        "UseLegacySdkResolver": true
    },
    "FormattingOptions": {
        "NewLine": "\n",
        "UseTabs": true,
        "TabSize": 2,
        "IndentationSize": 2,
        "NewLinesForBracesInLambdaExpressionBody": false,
        "NewLinesForBracesInAnonymousMethods": false,
        "NewLinesForBracesInAnonymousTypes": false,
        "NewLinesForBracesInControlBlocks": false,
        "NewLinesForBracesInTypes": false,
        "NewLinesForBracesInMethods": false,
        "NewLinesForBracesInProperties": false,
        "NewLinesForBracesInObjectCollectionArrayInitializers": false,
        "NewLinesForBracesInAccessors": false,
        "NewLineForElse": false,
        "NewLineForCatch": false,
        "NewLineForFinally": false
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过:Manjaro Linux、VS Code、Microsoft C# 扩展、Dotnet 6

Nin*_*rry 12

Visual Studio Code的C# 扩展设置中,确保启用Omnisharp:启用编辑器配置支持选项 ( )。omnisharp.enableEditorConfigSupport

在此输入图像描述


.editorconfig然后在项目目录中创建一个名为以下内​​容的文件:

[*.cs]
csharp_new_line_before_open_brace = none
Run Code Online (Sandbox Code Playgroud)

如果文件已存在,请修改或添加文件csharp_new_line_before_open_brace = none块中的行[*.cs]


为了不在 else、catch 和 finally 之前有换行符,还添加以下行:

csharp_new_line_before_else = false
csharp_new_line_before_catch = false
csharp_new_line_before_finally = false
Run Code Online (Sandbox Code Playgroud)

如果您想在所有项目中应用这些设置,您可以

  • 将文件放置.editorconfig在项目目录的公共父目录中或
  • 将文件放在主目录.editorconfig中。在 Windows 中,这是 %HOMEPATH% 下的目录。