FxCop 无法解析引用

Posted

技术标签:

【中文标题】FxCop 无法解析引用【英文标题】:FxCop can't resolve references 【发布时间】:2012-09-05 06:23:03 【问题描述】:

我正在使用 C# 开发项目。现在我已经设置了一个 Hudson 服务器 我已经在服务器上安装了 .Net 4 Framework 和 Windows SDK 7.1。

项目成功构建,但是当我启动 FxCop 时:

"C:\Program Files (x86)\Microsoft FxCop 1.35\fxcopcmd.exe" /file:CommonServiceTool\bin\Release /out:fxcop-result.xml

它会加载所有 .dll 规则文件,然后会发生以下异常:

Using system files at: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.
Could not resolve reference to PresentationFramework.
Could not resolve reference to PresentationCore.
Could not resolve reference to WindowsBase.
12 exceptions occurred while loading Project1.
   00) Could not resolve type reference: [PresentationFramework]System.Windows.StartupEventArgs.
   01) Could not resolve type reference: [PresentationFramework]System.Windows.Window.
   02) Could not resolve type reference: [PresentationFramework]System.Windows.Controls.HeaderedContentControl.
   03) Could not resolve type reference: [PresentationCore]System.Windows.Input.ICommand.
   04) Could not resolve member reference: System.Windows.ThemeInfoAttribute::.ctor.

... and so on...

我在项目中使用 WPF,我认为 FxCop 找不到 WPF 库。 有人可以帮我解决这个问题吗?

【问题讨论】:

hmmmm 闻起来像 32/64 位问题.... 【参考方案1】:

确保项目 -> 选项... - 拼写和分析 -> 检查“搜索全局程序集缓存以查找缺失的引用”(根据 FxCop and GAC Madness)。

【讨论】:

有命令行选项吗?我只使用 fxcopcmd.exe 从msdn.microsoft.com/en-us/library/bb429449(v=vs.80).aspx,您可以为每个目录使用/directory 选项(因为GAC 单独存储每个文件夹)。或者,在构建项目时,在每个引用的程序集上将“复制本地”设置为 true。这并不理想,但它至少会将所有程序集拉到本地。 我尝试检查“搜索全局程序集缓存以查找缺失的引用”,但没有任何改变。我不想复制对项目的引用。难道没有其他办法可以解决吗?还是我需要在服务器上安装完整的 MSVS。我们的管理员也不想安装它。 @CoolKiffings 这是在其他计算机上发生还是仅在 Hudson 服务器上发生? 两者都有。如果我在我的开发者电脑上使用 fxcopcmd.exe,它也会发生【参考方案2】:

您是直接运行 fxcopcmd.exe 还是通过插件运行?如果是前者,请尝试添加/gac 命令行开关。如果您使用的是中间运行器,它是什么?

【讨论】:

我已经在我们的 Hudson CI 服务器上安装了 FxCop。在那里,我使用 fxcopcmd 启动批处理命令。用 /gac 启动它并不能解决问题。 遇到同样的问题,解决对系统的引用的问题 - 将 /gac 开关添加到命令行已修复。【参考方案3】:

我在使用 fxcopcmd V12 时遇到了类似的问题。 我能够通过明确添加来解决它

/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\WindowsBase.dll"

见:FxCop engine exception on WPF assembly

【讨论】:

【参考方案4】:

好的,我明白了!

FxCop 1.35 不适用于 WPF。现在我已经安装了 FxCop 10.0。现在它起作用了。 不过谢谢大家的帮助!

【讨论】:

以上是关于FxCop 无法解析引用的主要内容,如果未能解决你的问题,请参考以下文章

FxCop 10.0 独立版无法分析使用 AutoMapper 的程序集

并排配置错误,无法解析引用 mscorlib

为啥 Ajv 在编译期间无法解析引用?

Spring Security 无法解析的循环引用

@PreAuthorize 不起作用 - 是不是存在无法解析的循环引用?

WCF 发布错误:元数据包含无法解析的引用: