找出哪个局部变量需要这种抑制

Find out what local variable requires this suppression

我正在使用的 c# 项目已启用 "Warnings as Errors",它们在代码中有很多抑制。其中:

[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Maintainability"
, "CA1500:VariableNamesShouldNotMatchFieldNames"
, MessageId = "CS$<>8__locals1")]

如果我取消抑制,构建就会失败。如何找出 C# 代码中的哪个特定标识符导致警告?

在这种情况下,你不能。看到 MessageId 值是 "CS$<>8__locals1" - 这是 C# compiler-generated 本地的,所以你不会直接在 C# 源代码中看到它 - 你必须使用像 ILSpy 这样的工具或 Reflector 查看 CIL 和变量。 According to this QAlocals 名称表示它是闭包 class 变量的名称 - 这意味着您在某处使用了 lambda 函数。

然而,没有必要手动抑制它,因为 FxCop 足够聪明,可以了解 C# 编译器生成的局部变量和字段(字段或其封闭类型无论如何都会用 [CompilerGenerated] 注释)。我猜您的构建过程使用的是最新的 C# 编译器,但使用的是非常旧的 FxCop 版本,无法识别新的 C# 语言功能。