code-analysis - 项目中引用的程序集名称但相同版本不可用

标签 code-analysis fxcop

我有一个引用 A.dll 的项目,当我构建 A.dll 时,它不会在本地复制,因为 Copy local 为 false。我也没有使用 A.dll 中的任何方法。

当我尝试在项目上运行 FxCop 时,它会提示 A.dll 不可用。

我可以通过任何方式避免在 FxCop 中进行这种检查。

最佳答案

如果您在这台机器上安装了 Visual Studio,那么您还可以使用 /p:RunCodeAnalysis=true 让 Fxcop 作为构建的一部分自动执行。您也可以从 Visual Studio 中为您的项目配置规则集。 MsBuild 将知道 A.dll 的位置,并将传递正确的引用。

至于为什么需要A.dll,这有点依赖于你的代码,二进制文件中显然有引用,所以有用法。它可以继承自该程序集的类或接口(interface)、枚举的使用,或者它可以是另一个程序集使用的程序集,您可以直接调用该程序集的方法。

如果未找到引用的程序集,则无法抑制生成的警告。这样做的原因是许多规则(主要是数据流规则)依赖于这些其他程序集来检查是否在项目上调用了 Dispose,是否将字符串传递给未经验证的 SQL 语句等。

如果无法分析正在执行的完整代码,这些类型的规则将无法找到所有问题。

关于code-analysis - 项目中引用的程序集名称但相同版本不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075838/

相关文章:

c# - 如何解析 C# 程序集并提取每个方法

iphone - 取消引用空指针,警告

c# - .NET [SuppressMessage] 运输程序集中的属性 fxcop

c# - 如果 DiagnosticAnalyzer 具有空的 Initialize,则 GetAnalyzerDiagnosticsAsync 不返回任何内容

我可以通过这种方式消除静态分析时指针的使用吗?

visual-studio-2019 - 打开代码分析规则集编辑器会使 Visual Studio 崩溃

sonarqube - 必须设置 sonar.cs.fxcop. assembly

dll - 访问 Microsoft.Office.Interop.Word.dll?

msbuild - 无法使用 MSBuild SonarQube Runner 执行 FxCop 规则

ios - 分析发现私有(private) API 使用,尽管我已经更改了该代码