在Visual Studio代码上为OmniSharp设置C#格式化选项?

cse*_*lls 5 omnisharp visual-studio-code

我试图利用与Visual Studio Code的集成,但无法弄清楚如何设置C#格式化选项.我的Mac上的OmniSharp exe旁边的config.json(/ Applications/Visual Studio Code.app/Contents/Resources/app/extensions/jrieken.vscode-omnisharp/bin/packages/OmniSharp/config.json)没有匹配标准的OmniSharp config.json格式,因此设置大括号+换行符属性不起作用,例如methodBraceStyle.它确实可以设置tabSize等.

g0n*_*0nk 13

如果有人遇到 Omnisharp 无法识别omnisharp.json 文件的问题(就像我今天早些时候遇到的那样),请将以下内容放入您的 vscode 中settings.json

"omnisharp.enableEditorConfigSupport": falseRestart Omnisharp

以下是有关此内容的更多信息的链接:https://github.com/OmniSharp/omnisharp-vscode/issues/5446#issuecomment-1308655891


igo*_*ael 9

只需使用最新的omnisharp(dev分支)和omnisharp.json(粘贴在下面)与我的项目相同的文件夹即可使用.sln.它应该适用于自v1.9-beta18以来的所有版本,我只是从源代码编译,因为我没有使用受支持的系统.

{
    "FormattingOptions": {
        "newLine": "\n",
        "useTabs": false,
        "tabSize": 4,
        "indentationSize": 4,

        "NewLinesForBracesInTypes": false,
        "NewLinesForBracesInMethods": false,
        "NewLinesForBracesInProperties": false,
        "NewLinesForBracesInAccessors": false,
        "NewLinesForBracesInAnonymousMethods": false,
        "NewLinesForBracesInControlBlocks": false,
        "NewLinesForBracesInAnonymousTypes": false,
        "NewLinesForBracesInObjectCollectionArrayInitializers": false,
        "NewLinesForBracesInLambdaExpressionBody": false,

        "NewLineForElse": false,
        "NewLineForCatch": false,
        "NewLineForFinally": false,
        "NewLineForMembersInObjectInit": false,
        "NewLineForMembersInAnonymousTypes": false,
        "NewLineForClausesInQuery": false,
    }
}
Run Code Online (Sandbox Code Playgroud)

可用选项列在此文件中:https://github.com/bstockus/omnisharp-roslyn/blob/dev/src/OmniSharp.Abstractions/Options/FormattingOptions.cs


BAC*_*CON 6

wiki上的配置选项omnisharp-roslyn

在启动时,OmniSharp 使用以下(分层)顺序获取配置选项:

  • 它自己的硬编码默认值
  • 环境变量
  • 命令行参数
  • 一个omnisharp.json文件位于%USERPROFILE%/.omnisharp/
  • omnisharp.json位于 OmniSharp 指向的工作目录中的文件

每个配置源都可以覆盖前一个源设置的任何设置。

根据其中一位开发人员的博客文章总结上述配置位置:

  • 默认值config.json在 OmniSharp 扩展的目录中指定。这是不建议修改这个文件。
  • 环境变量和命令行参数都不适用于 C# 扩展。
  • 放置omnisharp.json%USERPROFILE%\.omnisharp\(或~/.omnisharp/)特定于用户的设置。
  • 放置omnisharp.json在项目目录中用于项目特定的设置。
  • 在每个级别,您都可以覆盖单独的设置;您不需要重复整个配置。

使用ms-vscode.csharpVisual Code v1.42.0 扩展的v1.21.11 进行测试,似乎 OmniSharp 仅适用omnisharp.json于工作区文件夹的根目录,而不适用于后代目录

Visual Studio Code的C# 扩展也支持EditorConfig,您可以通过以下方法之一启用:


Rez*_*aba 5

Linux用户:

  1. 进入Linux主目录
  2. 打开.omnisharp文件夹(默认情况下它是隐藏的,因此请检查文件资源管理器的“显示隐藏文件”)
  3. 创建文件omnisharp.json
  4. 输入上面给出的代码

对于那些不想为每个项目一遍又一遍重复这些步骤的人来说,这是一个全局解决方案。

重要提示:从doc.microsoft.com/...选择正确的 Linux 版本来安装 dotNet SDK很重要!否则,omnisharp 将无法正确安装,并且上述代码将无法工作。