在 Visual Studio 2013 中,我如何将代码分析限制在我的代码中而不是引用的程序集?

In Visual Studio 2013 how do I limit code analysis to my code and not to referenced assemblies?

我在 Visual Studio 2013(c# 代码)中有一个解决方案,它引用了我使用 NuGet (ICSharpCode.SharpZipLib) 添加的第三方程序集。当我在解决方案上 运行 "Code Analysis" 时,我收到很多来自第三方程序集的警告。我如何告诉 VS 我只想从我的代码中获得代码分析建议?

我很确定错误来自库本身,而不是我对它的使用。共有 32 个问题,例如

CA2237: Mark ISerializable types with SerializableAttribute.

我正在使用 ILMerge 将其捆绑到单个可执行文件中,您认为这混淆了代码分析吗?

如果代码位于相同的二进制文件中,则无法告诉 FxCop 忽略代码中的命名空间或类型。使用 ILMerge 时,SharpZipLib 基本上成为您代码的一部分,因为它已合并到您的程序集中。

为了获得正确的结果,运行 在合并前生成的程序集上执行 FxCop。

类 上的其他 solutions will mention to put a [GeneratedCode] attribute 你想排除,但 IlMerge 在合并时没有选择,所以这对你没有帮助。

在 Visual Studio 2015 年代码分析使用新的 Roslyn 引擎处理源代码,这可能会解决问题,因为它甚至在编译之前就进行分析,因此不会受到您使用的影响IlMerge 的。