FxCop 间接引用 System.Core 版本 2.0.5.0
Posted
技术标签:
【中文标题】FxCop 间接引用 System.Core 版本 2.0.5.0【英文标题】:FxCop indirect reference to System.Core version 2.0.5.0 【发布时间】:2013-03-20 15:22:46 【问题描述】:我有一个使用 Autofac 和 WebAPI 集成的项目
我们在我们的解决方案上运行 FxCop,在打开 autofac 时,我得到以下信息:
找不到以下间接引用的程序集。这 分析不需要组装,但是,没有它,分析 结果可能不完整。这个汇编被引用了 Autofac.dll
System.Core,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e,Retargetable=Yes
这会在我们的 CI 服务器上导致以下错误:
FxCop 返回代码 (516):PROJECT_LOAD_ERROR ASSEMBLY_REFERENCES_ERROR
有没有办法告诉 FxCop 忽略这个?
【问题讨论】:
【参考方案1】:在我们的项目中使用 AutoMapper 3.1.0 时遇到了同样的问题。真正的问题是旧版本的 FxCop。上一个正式版本是 FxCop 10.0,但自 2012 年以来,新版本的 FxCop 已与 Visual Studio 捆绑在一起。 我刚刚将 FxCop 10.0 替换为可以在以下位置找到的版本:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop或
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop问题就解决了。
【讨论】:
这应该是公认的答案。如果它在构建服务器上运行,此链接可能对某人很感兴趣:***.com/questions/21729066/…【参考方案2】:在使用可移植类库运行时,这是常见的 FxCop 事情。这不是 Autofac;您只是碰巧看到了它,因为 Autofac 是您使用的唯一 PCL。根据我的经验,如果您在 Windows 8 机器上构建,则似乎不会发生此错误,但在 Windows 7 或 Server 2008R2 上,我经常看到此错误。
这不是错误,不,您不会在您的机器上找到 2.0.5.0。该版本实际上是用于 Silverlight 和运行时 .NET“东西”处理重定向到正确的程序集版本。不幸的是,FxCop 不太合作。
我在我的构建中看到了同样的问题,并使用以下问题的建议解决了它:How to fix FxCop error code 512?
【讨论】:
【参考方案3】:您必须在 FxCop 项目文件中添加对程序集目录的引用。例如:
<Targets>
<AssemblyReferenceDirectories>
<Directory>C:/Windows/Microsoft.NET/assembly/GAC_MSIL/Microsoft.Web.Infrastructure/v4.0_1.0.0.0__31bf3856ad364e35/</Directory>
<Directory>C:/Windows/Microsoft.NET/assembly/GAC_MSIL/System.Web.Mvc/v4.0_3.0.0.0__31bf3856ad364e35/</Directory>
</AssemblyReferenceDirectories>
【讨论】:
这怎么行?您使用其自己的项目文件的路径运行 FxCop。如果没有此项目文件,FxCop 将无法运行。此项目文件将在源代码控制中(可能在解决方案的目录中),因此您的 CI 服务器可以访问此文件。 问题是,我们的 gac / 任何地方都没有那个 DLL (System.Core v 2.0.5.0)....而且我们真的不想安装 silverlight我们的开发机器 / ci 服务器【参考方案4】:解决此问题的方法是将缺少的 System.Core.dll 复制到项目输出目录。我将此作为构建后事件,将 System.Core.dll 从共享文件夹复制到 project\bin 目录。 您可以从 Silverlight SDK 2 安装中获取 System.Core.dll 的副本。
现在 fxcop 可以成功运行,没有任何问题。请注意,我使用的是 Visual Studio 2010 的 Fxcop 集成器。
【讨论】:
以上是关于FxCop 间接引用 System.Core 版本 2.0.5.0的主要内容,如果未能解决你的问题,请参考以下文章