FxCop间接引用System.Core版本2.0.5.0

时间:2013-03-20 15:22:46

标签: autofac fxcop

我有一个使用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忽略这个?

4 个答案:

答案 0 :(得分: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

问题解决了。

答案 1 :(得分:3)

与Portable Class Libraries一起运行时,这是常见的FxCop。这不是Autofac;你碰巧看到了它,因为Autofac是你唯一使用的PCL。根据我的经验,如果你在Windows 8机器上构建,这个错误似乎不会发生,但在Windows 7或Server 2008R2上我看到了很多。

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

我在构建中看到了相同的内容,并使用以下问题的建议解决了这个问题:How to fix FxCop error code 512?

答案 2 :(得分: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> 

答案 3 :(得分:1)

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

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