VS Code没有格式化C#代码

时间:2017-11-17 14:12:34

标签: c# visual-studio-code

我创建了新文件,设置了C#语言,编写了一些代码。然后按Ctrl + Shift + F(或F1 - >格式文档)。并得到错误

  

很抱歉,但没有安装' csharp' -files的格式化程序。

我也安装了C#扩展,但它没有帮助。 VS Code版本是1.18.0

11 个答案:

答案 0 :(得分:23)

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

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

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

  3. 您应该在此处粘贴以下代码段。

这是我的配置:

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

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

答案 1 :(得分:6)

这对我有用。

Note:如果为true,请清除该复选框,然后再次将其设置为True。之后,您必须重新启动VS Code。

文件->首选项->设置->

enter image description here

答案 2 :(得分:3)

由omnisharp驱动的c#扩展没有包含格式化程序(据我所知)。

您可以安装c# FixFormat。这对我来说很有把握,但格式化程度不如Visual Studio IDE中那么好。

答案 3 :(得分:3)

带有OmniSharper的VSCode在没有.csproj文件的情况下不会格式化c#代码。 您可以使用带有.NET Core SDK的dotnet new console创建新项目。

答案 4 :(得分:3)

我发现还有另一种设置会干扰C#的格式。

"omnisharp.useEditorFormattingSettings": true

将此设置为false会为我修复缩进。

答案 5 :(得分:3)

  1. 浏览Visual Studio代码扩展库,并确保您已安装C#扩展ms-dotnettools.csharp

    VS Code extensions pane showing C# OmniSharp extension

  2. Ctrl + 打开“设置”面板。将editor.formatOnType设置更改为启用。默认情况下,我的Visual Studio代码中未启用此功能。

    VS Code settings window with editor.formatOnType setting

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

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

这已在Visual Studio Code版本1.43.1上进行了测试。

答案 6 :(得分:2)

在更新到vs.code 1.20.1并重新启用omni-sharp之后解决了。

并设置" csharp.format.enable"到"真"在工作区设置中。 (如果它是真的并且还没有工作,则将其更改为false然后更改为true)

答案 7 :(得分:1)

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

brew uninstall dotnet

另外,为了以防万一,我通过以下方式重新安装了 dotnet-sdk

brew reinstall dotnet-sdk

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

答案 8 :(得分:0)

使用synaptic包管理器并将代码包标记为“完全删除”,'点击申请。

喜欢here

Delete ~/.vscode
Delete ~/.config
Reinstall

它对我有用

答案 9 :(得分:0)

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

要解决此问题,请确保从文件夹(Ctrl + K,Ctrl + O)中打开所需的文件: enter image description here

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

答案 10 :(得分:0)

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

相关问题