VS 2022 - 将所有文件转换为文件作用域命名空间

91

我正在将我的项目转换为.NET 6,并希望在所有地方使用文件范围命名空间。但是转换工具只存在于编辑器中。

file-scoped namespace conversion

有人发现是否有一种方法可以一次在解决方案中运行此编辑器功能吗?(看起来Rider有这个功能)

4个回答

117

.editorconfig中添加规则来使用文件级别的命名空间对我很有用:

  • 在解决方案目录中创建.editorconfig文件
  • 在下面添加以下行/内容(文档代码 - IDE0161

示例.editorconfig文件内容:

[*.cs]
csharp_style_namespace_declarations = file_scoped:warning

之后,预览更改对话框中有一个选项可以将修复应用于整个项目/解决方案:

在此输入图片描述


3
需要将上一行添加到[.cs],否则无法正常工作。用法: [.cs] csharp_style_namespace_declarations = file_scoped - Ali Karaca
1
你是最棒的! - Oleksii Zhyglov
1
你是最棒的! - undefined

49

我总是遇到找不到应该更新的文件(比如这里的.editorconfig)的问题。我甚至不知道该在项目、Visual Studio安装目录还是PC上的任何文件夹中搜索它。所以我喜欢下面链接中的答案,因为它指出了在界面的哪个位置更改设置。

我认为最好的答案在这里: https://www.ilkayilknur.com/how-to-convert-block-scoped-namespacees-to-file-scoped-namespaces

它说你可以通过转到工具 => 选项 => 文本编辑器 => C# => 代码样式然后更改相关首选项来改变代码样式偏好(并启用在文档/项目/解决方案中应用此首选项的选项显示)。 输入图像描述


3
你不想这样做,因为那是IDE级别的。这个更改可能会生成成千上万的合并更改/冲突。 - KUTlime
3
所以作为一个团队,你们需要协商什么时候进行这样的改变,并在独立开展工作前确保每个人都了解并同意这一点,以便在继续工作之前让所有人达成一致。 - Caius Jard
好的,这不会生成现有更改,它只适用于新代码和建议(如果您选择这样做),同时它适用于每个新项目,这可能是您想要的。无论如何,这应该是团队决策,如上所述。 - mikus

11

EditorConfig语法

csharp_style_namespace_declarations = file_scoped:error
dotnet_diagnostic.IDE0161.severity = error

注意

选项 = 规则:严重程度 的语法将会在不久的将来被弃用

我强烈建议在开始为您的项目构建.editorconfig之前阅读本文


1
或许它最终不会被弃用:https://github.com/dotnet/roslyn/issues/52991 - maxc137
运行 'dotnet format' - undefined

5

在配置了.editorconfig之后,您可以配置“代码清理”设置,自动将所有文件转换为使用文件范围的命名空间。转到“工具”->“选项”->“文本编辑器”->“代码清理”->“配置代码清理”。然后添加“应用命名空间首选项”。然后转到“分析”->“代码清理”(或只需搜索“代码清理”),并运行代码清理以自动更改命名空间为文件范围。


这是一个很好的建议,但我的经验是,无论是这个建议还是被接受的答案都不能真正改变解决方案中的所有文件。我更改了代码清理选项,然后右键单击解决方案,它只更改了其中一些文件。如果我再次点击它……它会更改更多的文件,这毫无意义。被接受的答案也存在类似的问题。 - EGP

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