我有一个使用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忽略这个?
答案 0 :(得分:9)
在我们的项目中遇到与AutoMapper 3.1.0相同的问题。真正的问题是旧版本的FxCop。最后一个正式版本是FxCop 10.0,但自2012年以来,新版本的FxCop已与Visual Studio捆绑在一起。 我刚刚将FxCop 10.0替换为可在以下位置找到的版本:
或
问题解决了。
答案 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集成器。