2009-12-07 12 views
0

FWIW: Windows 7 64bit, Compact Framework v3.5, FxCop v1.36 (en cours d'exécution fxcopcmd.exe)FxCop: ensemble de commande référencé par l'ensemble analysé ne pas être chargé

Je difficultés à obtenir les FxCop 1,36 à courir correctement. J'analyse une application de structure compacte avec les règles de globalisation de http://www.dotneti18n.com/Downloads.aspx

le .exe que j'analyse a une référence à une suite de contrôle tiers: resco.outlookcontrols.cf.dll. Lorsque fxcop exécute et analyse mon application, elle explose en disant qu'elle ne peut pas trouver cet assemblage. J'ai vérifié, revérifié et vérifié 30 fois plus que tous les assemblys nécessaires à l'exécution de l'application se trouvent dans le même dossier que celui analysé, y compris les dll resco.

utilisant visionneuse de journal de fusion, je suis en mesure d'obtenir ces informations:

 
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. 

est ici la partie qui est vraiment me frustrant: la documentation FxCop (ici http://msdn.microsoft.com/en-us/library/bb429449%28VS.80%29.aspx) dit qu'il va charger tous les ensembles référencés à partir du même dossier que l'assembly analysé ou à partir d'un dossier référencé par l'option/directory: command line.

ce n'est pas à la hauteur des promesses documentées. le fichier existe dans le même dossier que celui en cours d'analyse et j'ai essayé de passer le dossier en tant que répertoire/option de ligne de commande. J'ai même défini l'élément AssemblyReferenceDirectories dans le fichier .fxcop. Pourtant, les seuls endroits qui sont recherchés, selon le journal de fusion, sont les emplacements «habituels» pour le sondage. Et fyi - j'ai essayé de mettre à jour les paramètres 'probing' dans le fichier fxcopcmd.exe.config - ne fonctionnera pas car le dossier de l'assembly analysé n'est pas sous le dossier racine de l'outil fxcop, donc ça me donne un avertissement disant qu'il ne sera pas sondé.

quelqu'un d'autre a ce problème? Quelqu'un at-il une solution?

grâce

Répondre

1

le problème s'est avéré être une analyse multithread. éteindre cela pour le serveur de construction a fonctionné.

0

Je suis d'accord avec Procmon (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) (tweeté à vous, mais ne savez pas si vous avez pu voir).

Il affichera toute activité du disque à laquelle FxCop tente d'accéder, et indiquera s'il ne trouve pas quelque chose. Il suffit de pomper beaucoup de détails, il faut juste un peu de temps pour maîtriser les filtres et vous êtes parti.

0

Cette application CF est-elle compilée à l'aide de la configuration Any CPU? L'ensemble de commandes Resco est-il uniquement 32 bits?

J'ai eu des problèmes sur une machine x64 avec le binaire System.Data.SQLite (qui est 32 bits) et la compilation contre Any CPU. La solution de contournement consistait à modifier le projet à compiler à l'aide de la configuration x86 dans Visual Studio au lieu de n'importe quel processeur.

+0

cela semble probable. Je vais vérifier ça. –

+0

Nous avons eu de tels problèmes, le danger de 'Any CPU' est qu'il choisira toujours x64 si c'est possible. – Bealer