5

我有一个使用 Autofac 和 WebAPI 集成的项目

我们在我们的解决方案上运行 FxCop,在打开 autofac 时,我得到以下信息:

找不到以下间接引用的程序集。分析不需要此组件,但是,如果没有它,分析结果可能不完整。Autofac.dll 引用了这个程序集

System.Core,版本=2.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e,可重定向=是

这会在我们的 CI 服务器上导致以下错误:

FxCop 返回代码 (516):PROJECT_LOAD_ERROR ASSEMBLY_REFERENCES_ERROR

有没有办法告诉 FxCop 忽略这个?

4

4 回答 4

9

在我们的项目中,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

问题就解决了。

于 2013-12-27T10:59:50.987 回答
3

在使用可移植类库运行时,这是常见的 FxCop 事情。这不是 Autofac;您只是碰巧看到了它,因为 Autofac 是您使用的唯一 PCL。根据我的经验,如果您在 Windows 8 机器上构建,则似乎不会发生此错误,但在 Windows 7 或 Server 2008R2 上,我经常看到这种情况。

这不是一个错误,不,你不会在你的机器上找到 2.0.5.0。该版本实际上是用于 Silverlight 和运行时 .NET“东西”处理重定向到正确的程序集版本。不幸的是,FxCop 不太合作。

我在我的构建中看到了同样的事情,并使用以下问题的建议解决了它:如何修复 FxCop 错误代码 512?

于 2013-03-21T16:23:25.150 回答
1

您必须在 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> 
于 2013-03-20T15:45:58.443 回答
1

此问题的解决方法是将缺少的 System.Core.dll 复制到项目输出目录。我将此作为构建后事件,将 System.Core.dll 从共享文件夹复制到 project\bin 目录。您可以从 Silverlight SDK 2 安装中获取 System.Core.dll 的副本。

现在 fxcop 成功运行,没有任何问题。请注意,我在 Visual Studio 2010 中使用了 Fxcop 集成器。

于 2013-10-17T12:26:23.703 回答