Visual Studio Code 无法格式化 C# 代码

111
我创建了一个新文件,设置了C#语言,并编写了一些代码。然后按下 Ctrl + Shift + F (或F1格式化文档),结果出现错误:

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

我也安装了C#扩展,但没有帮助。 Visual Studio Code版本为1.18.0。

1
请查看此扩展:https://github.com/OmniSharp/omnisharp-vscode - Laslos
规范是 *如何在Visual Studio Code中格式化代码?*,但不幸的是,没有一个答案回答了这个问题。 - Peter Mortensen
1
只需通过命令面板选择当前项目:Omnisharp > 选择项目。 - ilyas varol
20个回答

2

2

我通过简单地按下F1,输入“format”,然后按回车键解决了这个问题。 在我的情况下,我的环境中没有设置默认格式化程序,因此它提示了我格式化程序的选项。 我相信只有一个适用于C#。


1

Windows:Shift+Alt+F Ubuntu:Ctrl + Shift + I


1

针对MAC用户

我通过进行如下设置来解决此问题:

"omnisharp.useGlobalMono": "never"

在VS Code设置中,它会提示您重新启动Omnisharp,然后使用shift + option + f组合键即可生效。

1
在我的情况下,我之前通过Homebrew安装了dotnetdotnet-sdk,这似乎导致了OmniSharp的冲突。所以我通过以下方式删除了dotnet:
brew uninstall dotnet

此句话的英译中文为:

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

brew reinstall dotnet-sdk

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


1

检查 Omnisharp 日志,看看它是否给出了缺少格式的原因。在我的情况下,需要更新 dotnet sdk。

enter image description here


0

在Windows上运行良好:

--> Shift + Alt + F

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

0
我一直按着 Shift + Alt + F(格式化文档)键,以为我的格式化程序不起作用,因为它没有改变我认为格式不正确的部分。

namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {

        public static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var app = PublicClientApplicationBuilder
    .Create(_clientId)
    .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
    .WithRedirectUri("http://localhost")
    .Build();

            Console.WriteLine("Hello World!");
        }
    }
}

事实证明,使用默认设置,微软的C#扩展可以接受这种格式,它认为没有需要修复的问题。如果我改变第一行的缩进,则会修复此问题。

因此:您的代码可能已经格式化好了!


-1

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

就像这里这样

Delete ~/.vscode
Delete ~/.config
Reinstall

这对我有用。


@andoral,按照Peter的建议使用C# FixFormat来解决问题吧。如果你正在使用Ubuntu系统,那么这个方法一定有效;很抱歉我没有注意到你正在使用Windows操作系统。 - napi15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接