VS 2022 - 转换为所有文件中的文件范围命名空间

Mir*_*rek 96 .net c# .net-6.0 visual-studio-2022 c#-10.0

我正在将我的项目转换为 .NET 6,并且我想在任何地方使用文件作用域命名空间。但转换工具仅存在于编辑器中。

文件范围的命名空间转换

有没有人发现是否有一种方法可以同时在解决方案中的所有文件中运行此编辑器功能?(貌似Rider有这个功能)

Gur*_*ron 126

添加规则以使用文件范围的命名空间.editorconfig对我有用:

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

文件内容示例.editorconfig

[*.cs]
csharp_style_namespace_declarations = file_scoped:warning
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

  • 需要将上一行添加到 [*.cs],否则不起作用。用法:[*.cs] csharp_style_namespace_declarations = file_scoped (3认同)

Emi*_*itė 60

我总是在查找应该更新的文件时遇到问题(在本例中为 .editorconfig)。我什至不知道是否应该在项目、Visual Studio 安装或 PC 上的任何文件夹中搜索它。所以我喜欢下面链接中的答案,因为它说明了在界面中的何处可以更改设置。

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

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

  • 你不想这样做,因为那是 IDE 级别的。通过此更改,您实际上可以生成数千个合并更改/冲突。 (4认同)
  • 这就是为什么作为一个团队,你们同意何时进行这样的改变,并且你们单独进行,并在继续更多工作之前让每个人都达成共识......? (3认同)

KUT*_*ime 11

编辑器配置语法

csharp_style_namespace_declarations = file_scoped:error
dotnet_diagnostic.IDE0161.severity = error
Run Code Online (Sandbox Code Playgroud)

笔记

语法迟早option = rule:severity会被弃用。

我强烈建议您在开始构建项目之前阅读这篇文章。.editorconfig


Lev*_*evi 6

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