【问题标题】:Visual Studio Code doesn't format C# codeVisual Studio Code 不格式化 C# 代码
【发布时间】:2018-05-01 08:18:44
【问题描述】:

我创建了一个新文件,设置了 C# 语言,并编写了一些代码。然后我按下 Ctrl + Shift + F (或 F1Format Document) .并得到了我的错误

抱歉,没有安装“csharp”文件的格式化程序。

另外,我安装了 C# Extension,但没有帮助。 Visual Studio Code 版本为 1.18.0。

【问题讨论】:

标签: c# visual-studio-code


【解决方案1】:

使用 Synaptic 包管理器并将代码包标记为“完全删除”,然后单击应用。

点赞here

Delete ~/.vscode
Delete ~/.config
Reinstall

它对我有用。

【讨论】:

  • @andoral 按照 peter 的建议使用 C# FixFormat ,如果您使用的是 ubuntu ,这将起作用,抱歉,我没有注意您使用的是 windows 操作系统
【解决方案2】:

由 Omnisharp 提供支持的 C# 扩展没有包含格式化程序(据我所知)。

您可以安装C# FixFormat。这对我有用,但格式不如 Visual Studio IDE 中的好。

【讨论】:

  • 我也刚找到。事实证明,这是唯一的选择。
  • Omnisharp 确实包含 C# 格式化程序。只需确保从文件夹中打开文件 - 请参阅我的回答:stackoverflow.com/a/59154222/565985
  • 现在是 2020 年,FixFormat 和以前一样糟糕。我希望我可以真正使用 VS Code 来开发 Blazor 项目,但不是真的。主要问题之一是提供的格式非常糟糕。没有像昨天发明的那样处理好的插件、Blazor 和 Razor 文件。但是 FixFormat 中最糟糕的事情是用于描述选项的英语非常糟糕。很多“空格或制表符:是或否”之类的废话。所以VS社区。仍然有很多很多错误,但至少格式几乎是完全可配置的。
  • 此扩展程序现在未从 Marketplace 发布。 ?
  • 此扩展程序现在未从 Marketplace 发布。您可以选择卸载它。是的,给未来的读者同样的信息。我很遗憾我错过了这个。
【解决方案3】:

更新到 Visual Studio Code 1.20.1 并重新启用 OmniSharp 后解决。

只需在“工作区设置”中将“csharp.format.enable”设置为“true”(如果为 true 且尚未工作,请将其更改为 false,然后再更改为 true)。

【讨论】:

  • "csharp.format.enable": true 对我不起作用,我必须安装 c# FixFormat,但后来它要求我关闭 csharp.format.enable,这无论如何都没有效果,奇怪。
  • 在我的情况下,更改 tab size 参数会导致格式化程序丢失,只有设置 "csharp.format.enable": true 才能修复它。我只安装了C# (by Omnisharp)
【解决方案4】:

OmniSharp 的 Visual Studio Code 不会格式化没有 .csproj 文件的 C# 代码。

您可以使用 .NET Core SDK 使用 dotnet new console 创建一个新项目。

【讨论】:

  • 文件名也必须是 TitleCased。
【解决方案5】:

这对我有用。

注意:如果是true,则清除复选框并再次将其设置为true。之后,您必须重新启动 Visual Studio Code。

菜单文件首选项设置

【讨论】:

  • windows上是Shift+Alt+F,ubuntu上是Ctrl+Shift+I
  • 谢谢 - 我使用了 Visual Studio 扩展,它使 Format 热键与老大哥 IDE 相同。我推荐它。 C# FixFormat 扩展适用于 mac 上的 C# ~3/4/5 unity engine 项目
  • 感谢您指出(requires restart)。我完全错过了。
【解决方案6】:

如果您仍然遇到此问题,请注意 OmniSharp 扩展名在 was not opened from inside a folder (from here) 的 .cs 文件上表现不佳。

为了解决这个问题 - 确保从文件夹中打开所需的文件 (Ctrl + K, Ctrl + O):

然后格式化将起作用(以及其他 OmniSharp 功能)。

【讨论】:

  • 这对我不起作用。我已经安装了 OmniSharp 扩展并且是最新的,并且我在 VSCode 中打开了一个文件夹。然后我通过在左侧面板中单击打开一个 .cs 文件,但是当我尝试格式化时,它告诉我没有安装格式化程序。
  • 根本没有文件怎么办?我只是打开一个新编辑器,粘贴一些源代码,然后我想对其进行格式化。例如,这就是我经常对 JSON 数据执行的操作,并且它可以正常工作。但是对于 C# 代码,由于某种原因它不会。我有ms-dotnettools.csharp 扩展名。
【解决方案7】:

我发现有另一个设置干扰了格式化 C#。

"omnisharp.useEditorFormattingSettings": true

将此设置为 false 为我固定缩进。

【讨论】:

  • 我找不到这个特定设置,但是我发现如果选择“Omnisharp:选择项目”,然后选择我的项目,那么我的格式会被排序
  • 为我工作!在尝试了所有其他解决方案之后,当我从 cmd 切换到另一个项目时,vscode 实际上并没有改变当前项目
  • 这对我也有用,谢谢
【解决方案8】:
  1. 浏览 Visual Studio Code 扩展库,并确保您已安装 C# 扩展 ms-dotnettools.csharp

  2. Ctrl + , 打开设置面板。更改要启用的editor.formatOnType 设置。这在我的 Visual Studio Code 中默认没有启用。

  3. 重新启动 Visual Studio Code。现在,当您使用分号完成该行或关闭范围的外大括号时,它应该使代码自动格式化。

注意:这是编辑器的全局设置,因此它可以启用其他语言的自动格式化,而不仅仅是 C#。

这是在 Visual Studio Code 版本 1.43.1 上测试的。

【讨论】:

    【解决方案9】:

    如果您像我一样将prettier 作为默认格式化程序,您应该这样做:

    1. 使用以下快捷方式打开您的 vscode 设置:ctrl + ,

    2. 然后点击“打开设置(JSON)”:

    3. 这是您应该粘贴以下 sn-p 的位置。

    这是我的配置:

    {
      "editor.defaultFormatter": "esbenp.prettier-vscode",
      "[csharp]": {
        "editor.defaultFormatter": "ms-dotnettools.csharp"
      }
    }
    

    要应用此配置,您需要c# 扩展。

    【讨论】:

    • 只是好奇,您是如何找到有关 ms-dotnettools.csharp 的信息的
    • 基本上只是滚动浏览vscode-intellisense(建议),然后试了一下就可以了。
    • 基本上你告诉格式化程序使用 ms-dotnettools.csharp 用于 C# 和 esbenp.prettier-vscode 用于任何其他语言。我猜 prettier 目前没有 C# 格式化程序。周围可能有插件...
    • 谢谢,我也遇到了同样的问题,prettier 正在尝试默认格式化
    • 如果您仍然有缩进问题,请查看下面的@Samuel Ridings 答案
    【解决方案10】:

    即使在 VSCode Omnisharp 中设置制表符/空格大小后,仍然使用自己的规则,您可以通过使用带有自定义规则的“omnisharp.json”来更改它们。 有关这些规则的更多信息以及您可以在哪里添加文件检查this article

    【讨论】:

      【解决方案11】:

      就我而言,我之前通过 Homebrew 安装了 dotnetdotnet-sdk,这些似乎会导致 OmniSharp 冲突。所以我删除了dotnet by:

      brew uninstall dotnet
      

      另外,以防万一,我重新安装了dotnet-sdk by:

      brew reinstall dotnet-sdk
      

      另外,我重新启动了我的 Mac,然后它终于可以正常工作了。

      【讨论】:

        【解决方案12】:

        MAC 用户

        我通过设置解决了这个问题

        "omnisharp.useGlobalMono": "never"
        

        在 VS 代码设置中,它还会提示您重新启动 Omnisharp,然后它应该可以使用 shift + option + f 组合键

        【讨论】:

          猜你喜欢
          • 2018-09-05
          • 1970-01-01
          • 1970-01-01
          • 2017-08-13
          • 2021-10-31
          • 2021-03-02
          • 2023-03-12
          • 2018-02-26
          相关资源
          最近更新 更多