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

Posted

技术标签:

【中文标题】项目中引用的程序集名称但相同版本不可用【英文标题】:Assembly name referred in project but same version not available 【发布时间】:2015-06-26 14:31:31 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

至于为什么需要A.dll,这有点取决于你的代码,二进制里明明有引用,所以有用法。它可以是从该程序集的类或接口继承、使用 Enumeration 或者它可能是由另一个程序集使用的程序集,您可以直接在其上调用方法。

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

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

【讨论】:

以上是关于项目中引用的程序集名称但相同版本不可用的主要内容,如果未能解决你的问题,请参考以下文章

仅在 Windows Mobile/CE 上可用的引用程序集

跨 AppDomain 调用会破坏运行时

c# 未能载入文件或程序集

当项目名称相同但上下文不同时,Worklight 控制台应用程序被覆盖

在WPF(core版本)中引用外部字体不可用问题说明

C#提示未能找到类型或命名空间名称”Renderer“(是不是缺少 using 指令或程序集引用)怎么解决?