gpt4 book ai didi

c# - StyleCop 和 FxCop 规则相互排斥

转载 作者:太空狗 更新时间:2023-10-29 22:08:52 25 4
gpt4 key购买 nike

我正在使用 StyleCop 和 FxCop 工具来改进我的代码,但我遇到了两个规则,一个在 StyleCop 中,一个在 FxCop 中,它们相互排斥。如果我修复我的代码以匹配 StyleCop 的规则,则 FxCop 验证失败,反之亦然。

第一条规则是来自 StyleCop 的 SA1200,其中规定所有 using 指令都必须放在命名空间内。

All using directives must be placed inside of the namespace.

所以我做了这样的事情

namespace MyNamespace
{
using System;

...
}

StyleCop 没问题,不再有警告。现在我运行 FxCop 验证,它告诉我违反了 CA1014:

Mark 'MyApp.dll' with CLSCompliant(true) because it exposes externally visible types.

要解决这个问题,我应该这样做:

[ClsCompliant(true)]
namespace MyNamespace
{
...
}

但现在我无法构建我的项目,因为无法识别 ClsCompliant 属性(因为它来自 System 命名空间,我将其包含在 MyNamespace 中).因此,如果我将 using System; 指令移到 MyNamespace 声明之外。这将使我的代码编译,但它会再次打破 StyleCop 的规则。

除了禁用 StyleCop 或 FxCop 中的规则之一之外,是否有任何方法可以解决此问题?如果这不可能,我应该禁用哪些规则?哪个不太重要?

最佳答案

使用完整的属性名称:

[System.CLSCompliant(true)]
namespace MyNamespace
{
...
}

顺便说一句:如果您想将整个程序集标记为 CLSCompliant,请放置

[assembly: System.CLSCompliant(true)]

在 Properties/AssemblyInfo.cs 文件中

关于c# - StyleCop 和 FxCop 规则相互排斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com