在visual studio 2022中,有没有办法在命名空间前后添加新行



我正在使用Visual Stuido 2022来编写我的C#项目。

有没有一种方法可以使用(.editorconfig文件(来配置VS,其中在命名空间前后添加了一行新行?

所以我的课看起来像这个

using System;
namespace ProjectName.Tests;
public class Test
{

}

而不是

using System;
namespace ProjectName.Tests;
public class Test
{

}

我不确定是否有Visual Studio本机方法可以做到这一点。

.editorconfig中单独使用Visual Studio(意味着没有插件(,肯定有而不是的方法可以做到这一点。在Namespace声明首选项的中途,它谈到了csharp_style_namespace_declarations,并且当该值为file_scoped时的代码格式示例看起来像

// csharp_style_namespace_declarations = file_scoped
using System;
namespace Convention;
class C
{
}

这似乎会让你走到那里(using后面的空白行(。当您查看支持的格式规则时,列表非常简短。

如果你有ReSharper,有办法。.editorconfig中的这些设置将执行您想要的操作:

resharper_blank_lines_after_file_scoped_namespace_directive = 1
resharper_blank_lines_after_imports = 1

如果ReSharper不是一种选择,这里有三条可能的途径,没有一条那么好。它们当然不是简单的解决方案。

  • 尝试在Visual Studio市场中查找内容
  • 编写一个通过.editorconfig配置的.NET分析器(请参阅本页(
  • 在开发者社区上提出一个问题,希望他们能解决

StyleComp.Analizers有一系列与格式相关的规则,您可以在代码库中强制执行,在某些情况下,还可以自动修复这些规则。

不幸的是,看起来似乎还没有以您想要的方式支持文件范围的命名空间格式。这里有一个PR可以添加,所以如果你真的想拥有这个,你可以让PR通过终点线,或者自己构建:

https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3512

这个问题可能也值得一看:

https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3578

就像另一个人说的,

不,没有编辑器配置(开箱即用(。

Resharper可以做到这一点;您可以为代码构建一个自定义格式,并告诉它,例如,出于某种奇怪的原因,您希望在类下面的某些部分(如导入(在哪里;(。。。当然,这些部分周围有这样的间距。

但现在你必须为所有的开发者获得ReSharper许可证。Resharper的开发人员非常酷,Jetbrains几十年来一直在构建高质量的软件。也许我多愁善感。

好吧,如果你不想付钱,还有另一种选择。。。在过去的DevOps角色中,我曾使用Roslyn构建自定义格式的扩展。

构建自定义Rosyln分析器https://learn.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview?view=vs-2022#分析仪的严重性级别

您可以构建具有可配置严重性的自定义代码建议。

多亏了Rosyln,这也很容易,但你必须向后想一想。如果我能提供更多帮助,请告诉我。

最新更新