次の方法で共有


アセンブリ バインディング ログ ビューア (Fuslogvw.exe)

アセンブリ バインディング ログ ビューアは、アセンブリ バインドの詳細を表示します。この情報は、.NET Framework が実行時にアセンブリを見つけられない原因を診断する場合に役立ちます。通常、このようなエラーは、アセンブリが間違った位置に配置されているか、バージョン番号またはカルチャの不一致が存在する場合に発生します。通常、共通言語ランタイムによるアセンブリ検出エラーは、アプリケーション内で TypeLoadException として示されます。

アセンブリ バインディング ログの内容を表示するには

  • コマンド ラインから Fuslogvw.exe を実行します。

ビューアには、失敗したアセンブリ バインドごとに 1 つのエントリが表示されます。バインドを開始したアプリケーション、バインドの対象となるアセンブリ (名前、バージョン、カルチャ、公開キーなど)、およびエラーの日時の情報が、エラーごとにビューアに表示されます。

ログ位置ビューを変更するには

  1. Default を選択すると、すべてのアプリケーションの種類のバインド エラーが表示されます。既定では、ログ エントリは wininet キャッシュのディスクのユーザーごとのディレクトリに格納されます。

  2. [Custom] を選択すると、指定したカスタム ディレクトリのバインド エラーが表示されます。[ログ設定] ダイアログの [カスタム ログのパス] を使用して、ランタイムがログを格納するカスタムの場所を有効なディレクトリ名に指定する必要があります。このディレクトリはクリーンで、ランタイムが生成するファイルだけが含まれている必要があります。このディレクトリに、ログに記録するエラーを生成する実行可能ファイルが含まれている場合は、その実行可能ファイルと同じ名前でディレクトリの作成が試行されるため、そのエラーはログに記録されません。また、ログの位置から実行可能ファイルを実行しようとすると、失敗します。

    注意

    カスタム バインド位置ではなく、既定のバインド位置を使用することをお勧めします。ランタイムは wininet キャッシュに既定のバインド位置を格納するので、この位置は自動的に消去されます。カスタム バインド位置を指定する場合は、この位置を削除する手段を独自に組み込む必要があります。

特定のエラーの詳細を表示するには

  1. ビューアにエントリを表示するアプリケーション名を選択します。

  2. [View Log] をクリックします。また、選択したエントリをダブルクリックすることもできます。

    選択したバインド エラーについて、次の詳細が表示されます。

    • "ファイルが見つからない" や "バージョンの不一致" など、バインド エラーの具体的な原因。

    • バインドを開始したアプリケーションについての情報 (アプリケーション名、アプリケーションのルート ディレクトリ (AppBase)、プライベート検索パスが存在する場合にはそのパスなど)。

    • 検索対象となるアセンブリの ID。

    • Application、Publisher、または Administrator バージョンのポリシーが適用されている場合は、その説明。

    • グローバル アセンブリ キャッシュでのアセンブリの検出の有無。

    • すべてのプローブ URL の一覧。

失敗したアセンブリ バインドについての詳細情報を表示するサンプル ログ エントリを次に示します。

** Assembly Binder Log Entry (3/5/2002 @ 12:54:20 PM) **

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINNT\Microsoft.NET\Framework\v1.0.3705\fusion.dll
Running under executable  C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\graphicfailtest.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : graphicfailtest, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
===

LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources/graphicfailtest.resources.EXE.
LOG: All probing URLs attempted and failed.

ログから単一のエントリを削除するには

  1. ビューアでエントリを選択します。

  2. [Delete Entry] をクリックします。

ログからすべてのエントリを削除するには

  • [Delete All] をクリックします。

ユーザー インターフェイスに最新の情報を表示するには

  • [Refresh] ボタンをクリックします。ビューアの実行中に新しいログ エントリが自動的に検出されることはありません。新しいログ エントリを表示するには、[Refresh] を使用する必要があります。

ログ設定を変更するには、次の処理手順に従います。

  • [設定] をクリックして [ログ設定] ダイアログ ボックスを表示します。

[バージョン情報] ダイアログを表示するには

  • [バージョン情報] をクリックします。

[ログ設定] ダイアログ

[ログ設定] ダイアログを使用すると、次のようなアクションを実行できます。

ログを無効にするには

  • [ログを無効にする] をクリックします。このオプションの既定値はオンです。

アセンブリ バインドの例外をログに記録するには

  • [例外テキストに記録する] をクリックします。

    ドメインに中立的に読み込まれたアセンブリに関する「重要」メモを参照してください。

アセンブリ バインドの失敗をログに記録するには

  • [バインドの失敗をディスクに記録する] をクリックします。

    ドメインに中立的に読み込まれたアセンブリに関する「重要」メモを参照してください。

すべてのアセンブリ バインドをログに記録するには

  • [すべてのバインドをディスクに記録する] をクリックします。

    ドメインに中立的に読み込まれたアセンブリに関する「重要」メモを参照してください。

重要

アセンブリがドメインに中立的に読み込まれた場合 (LoaderOptimization プロパティを System.LoaderOptimization.MultiDomain または System.LoaderOptimization.MultiDomainHost に設定した場合など)、ログが有効になっているとメモリがリークすることがあります。これが起こるのは、ドメインに中立的なモジュールがアプリケーション ドメインに読み込まれているときにログ エントリが作成され、その後でアプリケーション ドメインがアンロードされた場合です。このログ エントリは、プロセスが終了するまで解放されません。一部のデバッガは、自動的にログを有効にします。

カスタムのログ パスを有効にするには

  1. [カスタム ログを有効にする] をクリックします。

  2. [カスタム ログのパス] テキスト ボックスにパスを入力します。

注意

アセンブリ バインディング ログ ビューア (Fuslogvw.exe) では、Internet Explorer (IE) のキャッシュを使用してバインディング ログを格納します。IE キャッシュは時折破損することがあるため、アセンブリ バインディング ログ ビューア (Fuslogvw.exe) の表示ウィンドウに新しいバインディング ログが表示されなくなることがあります。IE キャッシュが破損した場合、.NET バインディング インフラストラクチャ (fusion) ではバインディング ログの読み書きができなくなります(この問題はカスタム ログ パスを使用している場合は発生しません)。破損を修復し、fusion でバインディング ログが再度表示されるようにするには、IE の [インターネット オプション] ダイアログで一時インターネット ファイルを削除して IE キャッシュを消去します。

アンマネージ アプリケーションが、IHostAssemblyManager インターフェイスと IHostAssemblyStore インターフェイスを実装して共通言語ランタイムをホストしている場合、ログ エントリを wininet キャッシュに格納できません。これらのインターフェイスを実装したカスタム ホストのログ エントリを表示するには、別のログ パスを指定する必要があります。

参照

関連項目

.NET Framework ツール
TypeLoadException Class
SDK のコマンド プロンプト

概念

グローバル アセンブリ キャッシュ
ランタイムがアセンブリを検索する方法