FxCop无法解析引用

5

我正在用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库。请问是否有人能够帮忙解决这个问题?


1
嗯,闻起来像是32/64位问题... - Preet Sangha
4个回答

4

请确保在“项目”->“选项”-“拼写和分析”中勾选了“搜索全局程序集缺失引用”的选项(参见FxCop and GAC Madness)。


有没有相应的命令行选项?我只使用fxcopcmd.exe。 - CoolKiffings
从http://msdn.microsoft.com/en-us/library/bb429449(v=vs.80).aspx,您可以为每个目录使用`/directory`选项(因为GAC将每个文件夹单独存储)。或者,在构建项目时将每个引用程序集的“复制本地”设置为true。虽然不是理想的解决方案,但至少会将所有程序集都拉到本地。 - akton
@CoolKiffings 这个问题是在其他电脑上也出现了还是只有在Hudson服务器上出现了? - akton
如果我在我的开发者电脑上使用fxcopcmd.exe,也会出现这个问题。 - CoolKiffings
让我们在聊天中继续这个讨论。链接:http://chat.stackoverflow.com/rooms/16278/discussion-between-coolkiffings-and-akton - CoolKiffings
显示剩余2条评论

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

我已经在我们的Hudson CI服务器上安装了FxCop。我在那里使用fxcopcmd启动批处理命令。使用/gac启动它并不能解决问题。 - CoolKiffings
遇到了同样的问题,解决对 System 的引用问题 - 在命令行中添加 /gac 开关即可解决。 - Greg Smith

1

我曾经在使用 fxcopcmd V12 时遇到过类似的问题。 我通过显式添加来解决了这个问题。

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

请参见:FxCop 引擎在 WPF 程序集上的异常


0

好的,我明白了!

FxCop 1.35不支持WPF。现在我已经安装了FxCop 10.0。现在它可以工作了。 但是还是要感谢大家的帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接