アセンブリ バインド ログ ビューアーには、アセンブリ バインドの詳細が表示されます。 この情報は、.NET Framework が実行時にアセンブリを見つけることができない理由を診断するのに役立ちます。 これらのエラーは、通常、アセンブリが間違った場所に配置された結果、無効になったネイティブ イメージ、またはバージョン番号またはカルチャの不一致の結果です。 通常、共通言語ランタイムがアセンブリを見つけ出さないと、アプリケーションの TypeLoadException として表示されます。
Important
管理者特権で fuslogvw.exe を実行する必要があります。
このツールは、Visual Studio と共に自動的にインストールされます。 ツールを実行するには、管理者の資格情報で Visual Studio 開発者コマンド プロンプトまたは Visual Studio Developer PowerShell を使用します。
コマンド プロンプトで、次のコマンドを入力します:
fuslogvw
ビューアーには、失敗した各アセンブリ バインドのエントリが表示されます。 エラーごとに、ビューアーは次の内容を記述します。
- バインドを開始したアプリケーション
- 名前、バージョン、カルチャ、公開キーなど、バインドの対象となるアセンブリ
- エラーの日付と時刻
操作方法。。。
ログの場所ビューを変更する
すべてのアプリケーションの種類のバインド エラーを表示するには、[ 既定] オプション ボタンを選択します。 既定では、ログ エントリは wininet キャッシュ内のディスク上のユーザーごとのディレクトリに格納されます。
指定した カスタム ディレクトリのバインド エラーを表示するには、[カスタム] オプション ボタンを選択します。 [ ログ設定] ダイアログのカスタム ログの場所を有効なディレクトリ名に設定して、ランタイムがログを格納するカスタムの場所を指定する必要があります。 このディレクトリはクリーンで、ランタイムによって生成されるファイルのみが含まれている必要があります。 ログに記録されるエラーを生成する実行可能ファイルが含まれている場合、ツールは実行可能ファイルと同じ名前のディレクトリを作成しようとするため、エラーはログに記録されません。 さらに、ログの場所から実行可能ファイルを実行しようとすると失敗します。
注
既定のバインド場所は、カスタム バインドの場所に適しています。 ランタイムは wininet キャッシュに既定のバインド場所を格納するため、自動的にクリーンアップされます。カスタム バインドの場所を指定する場合は、その場所をクリーンアップする必要があります。
特定のエラーに関する詳細を表示する
ビューアーで目的のエントリのアプリケーション名を選択します。
[ ログの表示 ] ボタンをクリックします。 または、選択したエントリをダブルクリックすることもできます。
ツールには、選択したバインド エラーに関する次の詳細が表示されます。
バインドが失敗した具体的な理由 ("ファイルが見つかりません" や "バージョンの不一致" など)。
バインドを開始したアプリケーションに関する情報 (名前、アプリケーションのルート ディレクトリ (AppBase)、プライベート検索パス (存在する場合) の説明など)。
ツールが探しているアセンブリの ID。
適用されているアプリケーション、パブリッシャー、または管理者のバージョン ポリシーの説明。
アセンブリがグローバル アセンブリ キャッシュに見つかったかどうか。
すべてのプローブ URL の一覧。
次のサンプル ログ エントリは、失敗したアセンブリ バインドに関する詳細情報を示しています。
*** Assembly Binder Log Entry (3/5/2007 @ 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\v2.0.50727\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/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.EXE.
LOG: All probing URLs attempted and failed.
エントリを削除する
ログから 1 つのエントリを削除するには:
ビューアーでエントリを選択します。
[ エントリの削除 ] ボタンをクリックします。
ログからすべてのエントリを削除するには:
- [ すべて削除 ] ボタンをクリックします。
ユーザー インターフェイスを更新する
- [ 更新 ] ボタンをクリックします。 ビューアーは、実行中に新しいログ エントリを自動的に検出しません。 [更新] ボタンを使用して表示する必要があります。
ログ設定を変更する
[ 設定] ボタンをクリックして、[ ログ設定] ダイアログを開きます。
[バージョン情報] ダイアログを表示する
[ バージョン情報 ] ボタンをクリックします。
ネイティブ イメージのバインド ログ
既定では、Fuslogvw.exe は通常のアセンブリ バインド要求をログに記録します。 または、 Ngen.exe (ネイティブ イメージ ジェネレーター) を使用して作成されたネイティブ イメージのアセンブリ バインドをログに記録することもできます。
ネイティブ イメージのログ アセンブリ バインド
- [ ログ カテゴリ] グループで、[ ネイティブ イメージ ] オプション ボタンを選択します。
次のログは、アプリケーションのネイティブ イメージが作成されたときに存在しなかった依存関係によって発生したエラーを示しています。 実行時の依存関係が Ngen.exe 実行時の依存関係と異なる場合、ネイティブ イメージへのバインドは許可されません。
*** Assembly Binder Log Entry (12/8/2006 @ 5:22:07 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable E:\test\App.exe
--- A detailed error log follows.
LOG: Start binding of native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\App.exe.
LOG: Start validating native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency b, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
WRN: Dependency assembly was not found at ngen time, but is found at binding time. Disallow using this native image.
WRN: No matching native image found.
LOG: Bind to native image assembly did not succeed. Use IL image.
次のログは、アプリケーションの実行時にコンピューターのセキュリティ設定がネイティブ イメージの作成時のセキュリティ設定と異なっているために発生したネイティブ イメージ バインドエラーを示しています。
*** Assembly Binder Log Entry (12/8/2006 @ 5:29:09 PM) ***
The operation failed.
Bind result: hr = 0x80004005. Unspecified error
Assembly manager loaded from: E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable E:\test\Application101622.exe
--- A detailed error log follows.
LOG: Start binding of native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\Application101622.exe.
LOG: Start validating native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency Dependency101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Dependency evaluation succeeded.
LOG: Validation of dependencies succeeded.
LOG: Start loading all the dependencies into load context.
LOG: Loading of dependencies succeeded.
LOG: Bind to native image succeeded.
Native image has correct version information.
Attempting to use native image E:\Windows\assembly\NativeImages_v2.0.50727_64\Application101622\1ac7fadabec4f72575d807501e9fdc72\Application101622.ni.exe.
Rejecting native image because it failed the security check. The assembly's permissions must have changed since the time it was ngenned, or it is running with a different security context.
Discarding native image.
[ログ設定] ダイアログ
[ログ設定] ダイアログを使用して、次のアクションを実行できます。
ログ記録を無効にするには
- [ ログを無効にする ] オプション ボタンを選択します。 このオプションは既定で選択されていることに注意してください。
例外でアセンブリ バインドをログに記録するには
[ 例外テキストのログイン ] オプション ボタンを選択します。 最も詳細でない Fusion ログ情報のみが例外テキストに記録されます。 完全な情報を表示するには、他の設定のいずれかを使用します。
ドメインニュートラルとして読み込まれるアセンブリに関する重要な注意事項を参照してください。
アセンブリバインドエラーをログに記録するには
[ Log bind failures to disk]\(ディスクへのバインドエラーをログに記録する \) オプション ボタンを選択します。
ドメインニュートラルとして読み込まれるアセンブリに関する重要な注意事項を参照してください。
すべてのアセンブリ バインドをログに記録するには
[ Log all binds to disk]\(すべてのバインドをディスクに記録する \) オプション ボタンを選択します。
ドメインニュートラルとして読み込まれるアセンブリに関する重要な注意事項を参照してください。
Important
たとえば、 LoaderOptimization プロパティを LoaderOptimization.MultiDomain または LoaderOptimization.MultiDomainHost に設定するなどして、アセンブリがドメインニュートラルとして読み込まれると、ログ記録を有効にすると、メモリがリークする場合があります。 これは、ドメインに依存しないモジュールがアプリケーション ドメインに読み込まれ、後でアプリケーション ドメインがアンロードされたときにログ エントリが作成された場合に発生する可能性があります。 プロセスが終了するまで、ログ エントリが解放されない場合があります。 一部のデバッガーでは、ログ記録が自動的に有効になります。
カスタム ログ パスを有効にするには
[ カスタム ログ パスを有効にする] オプション ボタンを選択します。
[カスタム ログ パス] テキスト ボックスに パスを 入力します。
注
アセンブリ バインド ログ ビューアー (Fuslogvw.exe) は、インターネット ファイル キャッシュを使用してそのバインド ログを格納します。 キャッシュが破損する場合があるため、 アセンブリ バインド ログ ビューアー (Fuslogvw.exe) は、表示ウィンドウに新しいバインド ログが表示されなくなる場合があります。 この破損の結果、.NET バインディング インフラストラクチャ (Fusion) はバインド ログに書き込んだり、バインド ログから読み取ったりすることはできません。 (カスタム ログ パスを使用する場合、この問題は発生しません)。破損を修正し、Fusion でバインド ログをもう一度表示できるようにするには、インターネット プロパティの [ 閲覧履歴 ] セクションから一時インターネット ファイルを削除して、インターネット ファイル キャッシュをクリアします。
IHostAssemblyManagerインターフェイスとIHostAssemblyStore インターフェイスを実装して、アンマネージド アプリケーションが共通言語ランタイムをホストしている場合、ログ エントリを wininet キャッシュに格納することはできません。 これらのインターフェイスを実装するカスタム ホストのログ エントリを表示するには、代替ログ パスを指定する必要があります。
Windows アプリ コンテナーで実行されているアプリのログ記録を有効にするには
前の手順で説明したように、カスタム ログ パスを有効にします。 既定では、Windows アプリ コンテナーで実行されているアプリは、ハード ディスクへのアクセスが制限されます。 指定したディレクトリには、アプリ コンテナー内のすべてのアプリに対する読み取り/書き込みアクセス権があります。
[ イマーシブ ログを有効にする ] チェック ボックスをオンにします。
注
このボックスは、Windows 8 以降でのみ有効になります。
こちらも参照ください
.NET