项目中引用的程序集名称但相同版本不可用
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 上可用的引用程序集