FxCop 10.0 独立版无法分析使用 AutoMapper 的程序集
Posted
技术标签:
【中文标题】FxCop 10.0 独立版无法分析使用 AutoMapper 的程序集【英文标题】:FxCop 10.0 standalone failing to analyse assemblies that use AutoMapper 【发布时间】:2013-12-13 15:53:57 【问题描述】:我很难说服 FxCop 10.0 分析引用 AutoMapper 的程序集。
我创建了一个简单的类库,通过 NuGet 引用了 AutoMapper,并添加了如下代码:
using System;
namespace ClassLibrary4
public class Class1
public void Foo()
AutoMapper.Mapper.CreateMap<Obj1, Obj2>()
.ForMember(x => x.Name, opt => opt.Ignore());
public class Obj1
public string Name get; set;
public class Obj2
public string Name get; set;
然后我尝试使用 FxCop 10.0 通过命令行分析程序集,并收到消息:
无法加载 C:\Users\inelson\Documents\Visual Studio 2013\Projects\ClassLibrary4\ClassLibrary4\bin\Debug\ClassLibrary4.dll。
注意:找不到一个或多个引用的程序集。使用“/directory”或“/reference”开关指定其他程序集引用搜索路径。
未解决的参考是 System.Core 版本 2.0.5.0。
为了隔离问题,我删除了 .ForMember 方法调用,只保留了 Foo():
public void Foo()
AutoMapper.Mapper.CreateMap<Obj1, Obj2>();
FxCop 10.0 现在可以愉快地分析程序集了!
.ForMember 方法导致 FxCop 分析失败的原因是什么?
请注意,我在使用 .NET Framework 4.0、4.5 或 4.5.1 以及 AutoMapper 3.0.0 和 3.1.0 时遇到了相同的行为。
【问题讨论】:
长镜头.. 但是您是否尝试过为 AutoMapper 扩展命名空间添加 using 语句? 使用 Fuslogvw.exe 解决程序集解析问题。 @HansPassant 我试过了,没有显示失败的绑定。 不确定你指的是哪个命名空间安迪 - 据我所知,没有 AutoMapper.Extensions 命名空间。 ForMember 不是扩展方法,它位于根 AutoMapper 命名空间中。 请提供命令 FxComCmd.exe /file:ClassLibrary4.dll /console /v 的输出。从您的问题来看,无法找到确切的程序集并不明显。通常,此错误如下所示:无法加载“Library.dll”。读取模块“库”时遇到以下错误:无法解析程序集引用:“dependencyStrongName”。 【参考方案1】:确保 AutoMapper.dll 存在于输出目录中(在您的情况下,它是 C:\Users\inelson\Documents\Visual Studio 2013\Projects\ClassLibrary4\ClassLibrary4\bin\Debug)
更新: 这是 Portable Libraries 和 FxCop 的一个众所周知的问题。请看答案:
FxCop indirect reference to System.Core version 2.0.5.0 Unable to resolve assemblies that use Portable Class LibrariesAutoMapper bugtracker也讨论过这个问题。
更新 2: 而且我很确定会出现这个问题,因为 FxCop 独立版本不支持 .NET 4.5 和可移植类库。您可以在Visual Studio User Voice 上为适当的建议投票。
您是否尝试通过 Visual Studio 运行代码分析?
更新 3: 我尝试运行与 Visual Studio 2012 一起安装的 FxCopCmd.exe 的 11.0.50727.1 版本(我在 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Static Analysis Tools\FxCop 找到它),它似乎工作。
另外,我尝试在 Visual Studio 2012 中运行代码分析,它也可以工作。
【讨论】:
感谢 Vladimir,我还成功地分析了使用 FxCop 11 和 FxCop 12 的程序集。看来这些不能作为独立安装提供,我将看看 Visual Studio 2012/2013 是否可以安装在构建服务器。以上是关于FxCop 10.0 独立版无法分析使用 AutoMapper 的程序集的主要内容,如果未能解决你的问题,请参考以下文章