[C#] .NETでアセンブリのバインドの失敗のログ(Fusion)を有効にする方法



Answers

私は通常、Fusion Log Viewer(Visual StudioコマンドプロンプトのFuslogvw.exeまたはスタートメニューのFusion Log Viewer)を使用します。私の標準設定は次のとおりです。

  • Open Fusion Log Viewer
  • 設定をクリック
  • [ カスタムログパスを有効にする]チェックボックスをオンにします。
  • c:\FusionLogsように、ログに書き込む場所を入力します( 重要:このフォルダを実際にファイルシステムに作成したことを確認してください)。
  • 適切なレベルのロギングがオンになっていることを確認します(場合によっては、ディスクにすべてのバインドをログするだけで、正常に動作することを確認することもできます)
  • OKをクリックします。
  • ログの場所オプションをカスタムに設定する

完了したらログオフするのを忘れないでください!

(私はちょうど同様の質問でこれを掲示しました - 私はそれもここで関連していると思います。)

Question

.NETでアセンブリバインド失敗のロギング(Fusion)を有効にするにはどうすればよいですか?




次のレジストリ値を設定します。

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion!EnableLog](DWORD)を1に設定します

無効にするには、0に設定するか、値を削除します。

[編集]:次のテキストをWindowsレジストリエディタのFusionEnableLog.regなどのファイルに保存しますフォーマット:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001

その後、Windowsエクスプローラからファイルを実行し、警告が表示されないように無視してください。




他人を助けるかもしれないちょっとした情報。 クラス/インターフェースを継承/実装するクラスのために、いくつかのディレクトリ内のすべてのアセンブリを検索する行に何かを行う場合は、独自のアセンブリに関するこのエラーが発生した場合は、古いアセンブリを取り除いてください。

シナリオは次のようになります。

  1. アセンブリAは、あるフォルダ内のすべてのアセンブリをロードします
  2. このフォルダ内のアセンブリBは古いですが、アセンブリCを参照しています
  3. アセンブリBは存在しますが、アセンブリBが古くなった(名前空間がリファクタリングプロセスによって変更された)ため、名前空間、クラス名などの詳細が変更されている可能性があります。

要するに:A ---読み込み→B(古い)---参照---> C

このような場合は、エラーメッセージの名前空間とクラス名だけが表示されます。 それをよく調べる。 ソリューションのどこにも見つからない場合は、古くなったアセンブリを読み込もうとしている可能性があります。







Links