2009-12-07 20 views
0

FWIW:64位Windows 7,Compact Framework的v3.5版本,FxCop的v1.36(運行fxcopcmd.exe)的FxCop:通過分析組件引用控制組件沒有被加載

我有問題越來越FxCop的1.36運行正確。我正在用http://www.dotneti18n.com/Downloads.aspx

全球化規則分析一個小型框架應用程序。我正在分析的.exe文件有一個對第三方控件套件的引用:resco.outlookcontrols.cf.dll。當fxcop運行並分析我的應用程序時,它說它無法找到這個程序集。我檢查了一遍,重新檢查並再次檢查30次,運行該應用程序所需的所有程序集都與被分析的程序包位於同一個文件夾中 - 包括resco dll。

使用融合日誌查看器,我能夠得到這樣的信息:

 
LOG: DisplayName = Resco.OutlookControls.CF3, Version=6.7.0.0, Culture=neutral, PublicKeyToken=7444f602060105f9 
(Fully-specified) 
LOG: Appbase = file:///D:/Dev/TA/Tools/FxCop/ 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = NULL 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: D:\Dev\TA\Tools\FxCop\fxcopcmd.exe.Config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
LOG: Post-policy reference: Resco.OutlookControls.CF3, Version=6.7.0.0, Culture=neutral, PublicKeyToken=7444f602060105f9 
LOG: GAC Lookup was unsuccessful. 
LOG: Attempting download of new URL file:///D:/Dev/TA/Tools/FxCop/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.DLL. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3.EXE. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3.EXE. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Rules/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3.EXE. 
LOG: Attempting download of new URL file:///D:/Dev/TA/FxCop/Engines/Introspection/Resco.OutlookControls.CF3/Resco.OutlookControls.CF3.EXE. 
LOG: All probing URLs attempted and failed. 

這裏是真正令人沮喪的我的部分:FxCop的文件(這裏http://msdn.microsoft.com/en-us/library/bb429449%28VS.80%29.aspx)說,這將加載所有引用的程序集從分析的程序集所在的文件夾中,或從/ directory:命令行選項引用的文件夾中找到。

它不符合記錄的承諾。該文件確實存在於與正在分析的文件夾相同的文件夾中,並且我嘗試將該文件夾作爲/ directory:命令行選項傳遞。我甚至在.fxcop文件中設置了AssemblyReferenceDirectories元素。但根據融合日誌搜索的唯一地方是探測的「常見」位置。

和fyi - 我嘗試更新fxcopcmd.exe.config中的'探測'設置 - 將不起作用,因爲要分析的程序集的文件夾不在fxcop工具的根文件夾下,所以它使我警告說不會被探測。

其他人有這個問題嗎?任何人都有解決方案?

感謝

回答

1

問題原來是多線程分析。關閉構建服務器的工作。

0

我將討論procmon(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)同意(啾啾給你,但不知道你是否能看到)。

它會顯示FxCop試圖訪問的任何磁盤活動,並標記它是否找不到某些內容。它只是抽出很多細節,只需要一些時間來掌握過濾器,你就會離開。

0

此CF應用程序是否使用Any CPU配置進行編譯? Resco是否僅控制32位組件?

我在使用System.Data.SQLite二進制文件(32位)並針對任何CPU編譯的x64機器上遇到了問題。解決方法是將項目更改爲使用Visual Studio中的x86配置而不是Any CPU進行編譯。

+0

似乎很可能。我會檢查這一點。 – 2009-12-10 18:00:11

+0

我們有過這樣的問題,'任何CPU'的危險是它會一直選擇x64。 – Bealer 2009-12-11 15:35:06