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

Posted

技术标签:

【中文标题】VS 2022 - 在所有文件中转换为文件范围的命名空间【英文标题】:VS 2022 - Convert to file-scoped namespace in all files 【发布时间】:2021-12-21 15:35:55 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

EditorConfig 语法

csharp_style_namespace_declarations = file_scoped
dotnet_diagnostic.IDE0161.severity = error

注意

语法option = rule:severity 迟早会是deprecated。

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

【讨论】:

【参考方案3】:

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

在解决方案目录中创建.editorconfig 文件 在下面添加以下行/内容(docs,code - IDE0161)

示例.editorconfig文件内容:

[*.cs]
csharp_style_namespace_declarations = file_scoped:warning

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

【讨论】:

需要将上一行添加到 [.cs] 否则无法正常工作。用法:[.cs] csharp_style_namespace_declarations = file_scoped

以上是关于VS 2022 - 在所有文件中转换为文件范围的命名空间的主要内容,如果未能解决你的问题,请参考以下文章

164VS2022下VC++调用CreateFile文件名不能接受char*,包括强制转换成LPCWSTR的char*也会出错

164VS2022下VC++调用CreateFile文件名不能接受char*,包括强制转换成LPCWSTR的char*也会出错

visualstudio2022无法启动程序

2022-03-16 解决VScode中less文件的运算式不生效的问题

166VS2022调试通过海康人脸抓拍SDK的C++代码

如何防止 VS 2022 在 esproj 中显示带有 d.ts 文件的打字稿错误