我有一个引用 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/