为什么 StyleCopAnalyzers 认为全局 using 应该在命名空间内声明,而这种语法是不可能的?

问题描述 投票:0回答:2

我正在创建一个 NUnit 测试项目,在创建该项目时,MS Visual Studio 创建了一个名为 Usings.cs 的文件,其中包含以下行

global using NUnit.Framework;

它告诉项目在每个文件中包含 NUnit 框架。

我一直在这个测试项目上运行StyleCopAnalyzers,并且它不断报告

SA1200:using 指令应出现在命名空间声明中。

但是,当我将

global using
放在命名空间声明中时

namespace TestProject
{
    global using NUnit.Framework;
}

我收到错误

CS8914:全局 using 指令不能在命名空间声明中使用。

正确的做法是什么?我应该将 Usings.cs 文件与

global usings
一起使用吗?

c# .net namespaces stylecop using-directives
2个回答
1
投票

在您的 .csproj 中添加以下行

 <ItemGroup>
    <Using Include="NUnit.Framework" />
  </ItemGroup>

0
投票

看起来默认值可能已更改。该修复涉及更新您的编辑器配置文件 (.editorconfig),该文件应与您的解决方案位于同一目录中。

寻找以下内容

  • csharp_using_directive_placement
  • dotnet_diagnostic.SA1200.严重性

你希望它们看起来像

csharp_using_directive_placement = outside_namespace
dotnet_diagnostic.SA1200.severity = None

或者只是删除 csharp_using_directive_placement 以获得默认行为

dotnet_diagnostic.SA1200.severity = None

在我的项目中,

csharp_using_directive_placement
被设置为inside_namespace,这在全局使用文件中是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.