0

FWIW: Windows 7 64 ビット、Compact Framework v3.5、FxCop v1.36 (fxcopcmd.exe を実行)

FxCop 1.36 を正しく実行するのに問題があります。http://www.dotneti18n.com/Downloads.aspxのグローバリゼーション ルールを使用して、コンパクトなフレームワーク アプリケーションを分析しています。

私が分析している .exe には、サード パーティのコントロール スイートへの参照があります: resco.outlookcontrols.cf.dll。fxcop がアプリを実行して分析すると、このアセンブリが見つからないと言って爆発します。アプリを実行するために必要なすべてのアセンブリが、分析対象のフォルダーと同じフォルダーにあることを確認し、再確認し、さらに 30 回確認しました (resco dll を含む)。

Fusion ログ ビューアーを使用すると、次の情報を取得できます。

ログ: DisplayName = Resco.OutlookControls.CF3、バージョン = 6.7.0.0、カルチャ = ニュートラル、PublicKeyToken = 7444f602060105f9
 (完全指定)
ログ: Appbase = file:///D:/Dev/TA/Tools/FxCop/
ログ: 初期 PrivatePath = NULL
ログ: 動的ベース = NULL
ログ: キャッシュ ベース = NULL
ログ: AppName = NULL
呼び出しアセンブリ : (不明)。
===
ログ: このバインドはデフォルトのロード コンテキストで開始されます。
ログ: アプリケーション構成ファイルの使用: D:\Dev\TA\Tools\FxCop\fxcopcmd.exe.Config
ログ: C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config のマシン構成ファイルを使用しています。
ログ: ポリシー後の参照: Resco.OutlookControls.CF3、Version=6.7.0.0、Culture=neutral、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 要素を設定しました。それでも、融合ログによると、検索される場所は、探査のための「通常の」場所だけです。

fyi - 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​​ ビットのみですか?

x64 マシンで System.Data.SQLite バイナリ (32 ビット) を使用し、任意の CPU に対してコンパイルする際に問題が発生しました。回避策は、任意の CPU ではなく、Visual Studio で x86 構成を使用してコンパイルするようにプロジェクトを変更することでした。

于 2009-12-10T17:35:24.717 に答える