在Visual Studio 2022中,在保存时使用“格式化代码”和“排序”功能

31

我和我的团队花了几个月的时间为我们的项目定义了C#代码格式和风格的规则,因此我们得到了一个 .editorconfig 文件。

此外,我们所有人都安装了扩展程序 Productivity Power Tools,以便在保存文件(CTRL+S)时格式化代码,而不必使用VS内置的功能 Code Clean Up。当我们意识到后者需要一个特殊的快捷键(CTRL+K,CTRL+E),并且每个团队成员都需要在本地设置此设置时,我们做出了这个决定,因为没有办法将其放入源控制中。

这种工作方式在VS 2019中效果很好。

但是,在过去的一个月中,大多数团队成员升级到了VS 2022,扩展程序 Productivity Power Tools 22 貌似没有任何原因地移除了 “格式化时保存” 和 “保存时删除和排序 using” 功能。

我们通过在Commands选项中设置 Edit.FormatDocument Edit.RemoveAndSort 来解决了这个问题,使用了扩展程序VSE-FormatDocumentOnSave。看起来它运作良好,但我们担心的是这不是一个微软的工具,谁知道将来会发生什么。

所以,由于代码风格和格式规则对每个团队都很重要,我想知道是否有更好的方法来管理这些问题,考虑到我们是一个20多名开发人员的团队。


我们团队使用“Artistic Style” VS扩展程序,链接为:https://github.com/lukamicoder/astyle-extension。不过对于2022年的版本,您可能需要自行升级。 - tromgy
有更好的方法 - 不要强制开发人员使用IDE和扩展来控制代码风格和格式(因为他们可能更喜欢使用VS Code或Vim)。相反,使用代码审查、门禁检查(例如审核过的拉取请求合并到主分支),静态代码分析器(Stylecop、SonarCube、Roslynator都可以从NuGet包中添加到您的代码中)并将它们纳入您的构建管道。ReSharper有一个免费的命令行工具,您也可以将其纳入其中。 - Piers Myers
@tromgy 感谢您的建议,但正如我在问题中所述,我想使用微软产品,因为其他所有产品将来可能会被弃用。 - Krusty
2
@PiersMyers 我们都使用VS,但是editorconfig也受到VS Code的支持。我们已经尝试使用PR,但那并不容易。静态代码分析器是我们下一步的目标,但我们绝对需要一种简单的方式来格式化代码-我们正在清理80多个项目中的任何警告/建议,有时按下CTRL+S就足以解决同一文件中的20多个警告。 - Krusty
5个回答

42
从VS2022-Preview2开始,不需要额外的扩展来“格式化保存”,只需运行包含“格式化文档”操作的自定义代码清理即可:
  1. Analyze > Code Cleanup > Configure Code Cleanup中自定义您的清理配置文件以执行“格式化文档”操作(如果尚未存在)
  2. 在VS配置中启用“在保存时运行代码清理配置文件”,Tools > Options > Text Editor > Code Cleanup
将代码清理保存到Visual Studio 2022 17.1预览版2中 不幸的是,代码清理设置既没有包括在.editorconfig文件中,也没有包括在可以在团队之间共享的导出配置文件.vssettings中,也许将来会被包括进去。
一些与此相关的功能请求:

我认为他们将在接下来的预览版VS 17.2 Preview 2中整合代码清理和编辑器配置。这可能是我想要的!不过,感谢您的反馈。 - Krusty
1
谢谢。这对我很有帮助。我必须设置使用编辑过的Profile 2。也许在未来,这个功能会得到增强。感谢提醒。 - PHenry

7
"保存时格式化文档" 对我有用。
配置: Configuration

6
试试由微软员工Mads Kristensen开发的“保存时代码清理”扩展程序,您可以访问此处了解详情。虽然我自己没有使用过该扩展程序,但他所有的其他VS扩展程序都很棒。
编辑:Visual Studio 17.1(目前为预览版)已经添加了“保存时清理”功能,无需使用扩展程序。您可以访问此处了解更多信息。

感谢您的建议。但是,我们已经尝试过这个扩展程序了。您需要正确配置Visual Studio的“代码清理”功能,这是一个不可共享但本地的设置。 - Krusty
1
在发布的VS 2022版本中,链接的“保存时运行代码清理配置文件”功能不可用,因此您必须使用扩展。 - Piedone

0
在VS 2022中,保存时格式仍然存在。我花了一些时间才找到它,并且它是未选中状态。请前往“工具-选项”并搜索“保存”。

enter image description here


正如其他评论中已经解释的那样,这不是我正在寻找的选项。清理配置文件会忽略.editorconfig文件,这不是一个有版本控制的设置。 - undefined

0

要为 Visual Studio Code 2023 格式化代码,请使用

SHIFT + OPTION + F

问题是不同的。 - Krusty

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