0

FWIW:Windows 7 64 位,Compact Framework v3.5,FxCop v1.36(运行 fxcopcmd.exe)

我在让 FxCop 1.36 正常运行时遇到问题。我正在使用来自http://www.dotneti18n.com/Downloads.aspx的全球化规则分析一个紧凑的框架应用程序

我正在分析的 .exe 引用了第 3 方控制套件:resco.outlookcontrols.cf.dll。当 fxcop 运行并分析我的应用程序时,它会说找不到这个程序集。我已经检查、重新检查和检查了 30 多次,以确保运行应用程序所需的所有程序集都与正在分析的程序集位于同一文件夹中 - 包括 resco dll。

使用融合日志查看器,我可以获得以下信息:

日志:DisplayName = Resco.OutlookControls.CF3,版本 = 6.7.0.0,文化 = 中性,PublicKeyToken = 7444f602060105f9
 (完全指定)
日志:Appbase = file:///D:/Dev/TA/Tools/FxCop/
日志:初始 PrivatePath = NULL
日志:动态基础 = NULL
日志:缓存基础 = NULL
日志:AppName = NULL
调用程序集:(未知)。
===
LOG:此绑定在默认加载上下文中开始。
LOG:使用应用程序配置文件:D:\Dev\TA\Tools\FxCop\fxcopcmd.exe.Config
日志:使用 C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config 中的机器配置文件。
日志:政策后参考:Resco.OutlookControls.CF3,版本=6.7.0.0,文化=中性,PublicKeyToken=7444f602060105f9
日志:GAC 查找不成功。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/Tools/FxCop/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3.EXE。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3.EXE。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3.EXE。
日志:正在尝试下载新的 URL 文件:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE。
LOG:所有探测 URL 都已尝试并失败。

这是让我非常沮丧的部分:fxcop 文档(此处为http://msdn.microsoft.com/en-us/library/bb429449%28VS.80%29.aspx)说它将加载所有引用的程序集分析的程序集所在的同一文件夹,或来自 /directory: 命令行选项引用的文件夹。

它没有兑现书面承诺。该文件确实存在于与正在分析的文件相同的文件夹中,我尝试将该文件夹作为 /directory: 命令行选项传递。我什至在 .fxcop 文件中设置了 AssemblyReferenceDirectories 元素。然而,根据融合日志,唯一被搜索的地方是探测的“通常”位置。

并且仅供参考 - 我尝试更新 fxcopcmd.exe.config 中的“探测”设置 - 将不起作用,因为正在分析的程序集的文件夹不在 fxcop 工具的根文件夹下,所以它给了我一个警告说不会被调查。

其他人有这个问题吗?有人有解决方案吗?

谢谢

4

3 回答 3

1

问题原来是多线程分析。为构建服务器关闭它使其正常工作。

于 2009-12-28T14:57:34.397 回答
0

我同意 Procmon(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)(在推特上发给你,但不确定你是否能看到)。

它将显示 FxCop 尝试访问的任何磁盘活动,并在找不到某些内容时进行标记。它只是抽出很多细节,只需要一点时间来掌握过滤器,然后你就走了。

于 2009-12-10T17:31:38.030 回答
0

此 CF 应用程序是否使用 Any CPU 配置编译?Resco 控件组件是否仅 32 位?

我在使用 System.Data.SQLite 二进制(32 位)并针对任何 CPU 编译的 x64 机器上遇到问题。解决方法是将项目更改为使用 Visual Studio 中的 x86 配置而不是 Any CPU 进行编译。

于 2009-12-10T17:35:24.717 回答