Fuslogvw.exe (Penampil Log Pengikatan Rakitan)

Penampil Log Pengikatan Rakitan menampilkan detail untuk pengikatan rakitan. Informasi ini membantu Anda mendiagnosis mengapa .NET Framework tidak dapat menemukan assembly pada runtime. Kegagalan ini biasanya merupakan hasil dari rakitan yang disebarkan ke lokasi yang salah, gambar asli yang tidak lagi valid, atau ketidakcocokan dalam nomor versi atau budaya. Kegagalan runtime bahasa umum untuk menemukan rakitan biasanya muncul sebagai TypeLoadException di aplikasi Anda.

Penting

Anda harus menjalankan fuslogvw.exe dengan hak istimewa administrator.

Alat ini otomatis terpasang dengan Visual Studio. Untuk menjalankan alat, gunakan Visual Studio Developer Command Prompt atau Visual Studio Developer PowerShell dengan info masuk administrator.

Pada perintah, masukkan perintah berikut:

fuslogvw

Penampil menampilkan entri untuk setiap pengikatan rakitan yang gagal. Untuk setiap kegagalan, penampil menjelaskan:

  • aplikasi yang memulai pengikatan
  • rakitan untuk, termasuk nama, versi, budaya, dan kunci publik
  • tanggal dan waktu kegagalan

Bagaimana caranya...

Mengubah tampilan lokasi log

  1. Pilih tombol Opsi default untuk melihat kegagalan ikatan untuk semua jenis aplikasi. Secara default, entri log disimpan dalam direktori per pengguna pada disk di cache wininet.

  2. Pilih tombol Opsi kustom untuk melihat kegagalan ikatan dalam direktori kustom yang Anda tentukan. Anda harus menentukan lokasi kustom tempat Anda ingin runtime menyimpan log dengan mengatur lokasi log kustom dalam dialog Pengaturan Log ke nama direktori yang valid. Direktori ini harus bersih, dan hanya berisi file yang dihasilkan runtime. Jika berisi executable yang menghasilkan kegagalan untuk dicatat, kegagalan tidak akan dicatat karena alat mencoba membuat direktori dengan nama yang sama dengan yang dapat dieksekusi. Selain itu, upaya untuk menjalankan executable dari lokasi log akan gagal.

    Nota

    Lokasi ikatan default lebih disukai daripada lokasi pengikatan kustom. Runtime menyimpan lokasi ikatan default di cache wininet, dan oleh karena itu secara otomatis membersihkannya. Jika Anda menentukan lokasi pengikatan kustom, Anda bertanggung jawab untuk membersihkannya.

Melihat detail tentang kegagalan tertentu

  1. Pilih nama aplikasi entri yang diinginkan di penampil.

  2. Klik tombol Tampilkan Log . Secara bergantian, Anda dapat mengklik dua kali entri yang dipilih.

    Alat ini menampilkan detail berikut tentang kegagalan ikatan yang dipilih:

    • Alasan spesifik pengikatan gagal, seperti "file tidak ditemukan" atau "versi tidak cocok".

    • Informasi tentang aplikasi yang memulai pengikatan, termasuk namanya, direktori akar aplikasi (AppBase), dan deskripsi jalur pencarian privat, jika ada.

    • Identitas perakitan yang dicari alat.

    • Deskripsi kebijakan versi Aplikasi, Penerbit, atau Administrator apa pun yang telah diterapkan.

    • Apakah rakitan ditemukan di cache perakitan global.

    • Daftar semua URL pemeriksaan.

Contoh entri log berikut menunjukkan informasi terperinci tentang ikatan rakitan yang gagal.

*** 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.

Hapus entri

Untuk menghapus satu entri dari log:

  1. Pilih entri di penampil.

  2. Klik tombol Hapus Entri .

Untuk menghapus semua entri dari log:

  • Klik tombol Hapus Semua .

Merefresh antarmuka pengguna

  • Klik tombol Refresh . Penampil tidak otomatis mendeteksi entri log baru saat sedang berjalan. Anda harus menggunakan tombol Refresh untuk menampilkannya.

Mengubah pengaturan log

Klik tombol Pengaturan untuk membuka dialog Pengaturan Log .

Menampilkan dialog Tentang

Klik tombol Tentang .

Mengikat log untuk gambar asli

Secara default, Fuslogvw.exe mencatat permintaan pengikatan perakitan normal. Atau, Anda dapat mencatat pengikatan rakitan untuk gambar asli yang dibuat menggunakan Ngen.exe (Native Image Generator).

Rakitan log mengikat untuk gambar asli

  • Di grup Kategori Log , pilih tombol opsi Gambar Asli .

Log berikut menunjukkan kegagalan yang disebabkan oleh dependensi yang tidak ada ketika gambar asli dibuat untuk aplikasi. Jika dependensi pada runtime berbeda dari dependensi saat Ngen.exe dijalankan, pengikatan ke gambar asli tidak diizinkan.

*** 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.

Log berikut menunjukkan kegagalan pengikatan gambar asli yang terjadi karena pengaturan keamanan pada komputer ketika aplikasi dijalankan berbeda dari pengaturan keamanan pada saat gambar asli dibuat.

*** 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.

Dialog Pengaturan Log

Anda dapat menggunakan dialog Pengaturan Log untuk melakukan tindakan berikut.

Untuk menonaktifkan pengelogan

  • Pilih tombol opsi Log dinonaktifkan . Perhatikan bahwa opsi ini dipilih secara default.

Untuk mencatat pengikatan rakitan dalam pengecualian

  • Pilih tombol opsi Teks pengecualian masuk . Hanya informasi log fusi terperinci yang dicatat dalam teks pengecualian. Untuk melihat informasi lengkap, gunakan salah satu pengaturan lainnya.

    Lihat Catatan penting mengenai rakitan yang dimuat sebagai netral domain.

Untuk mencatat kegagalan pengikatan perakitan

  • Pilih tombol Opsi pengikatan log kegagalan ke disk .

    Lihat Catatan penting mengenai rakitan yang dimuat sebagai netral domain.

Untuk mencatat semua ikatan rakitan

  • Pilih tombol opsi Log semua ikatan ke disk .

    Lihat Catatan penting mengenai rakitan yang dimuat sebagai netral domain.

Penting

Ketika rakitan dimuat sebagai domain netral, misalnya dengan mengatur LoaderOptimization properti ke LoaderOptimization.MultiDomain atau LoaderOptimization.MultiDomainHost, mengaktifkan pengelogan mungkin bocor memori dalam beberapa kasus. Ini dapat terjadi jika entri log dibuat ketika modul netral domain dimuat ke domain aplikasi, dan kemudian domain aplikasi dibongkar. Entri log mungkin tidak dirilis sampai proses berakhir. Beberapa debugger secara otomatis mengaktifkan pengelogan.

Untuk mengaktifkan jalur log kustom

  1. Pilih tombol opsi Aktifkan jalur log kustom .

  2. Masukkan jalur ke dalam kotak teks Jalur log kustom .

Nota

Penampil Log Pengikatan Perakitan (Fuslogvw.exe) menggunakan cache file internet untuk menyimpan log pengikatannya. Karena kerusakan sesekali di cache, Penampil Log Pengikatan Perakitan (Fuslogvw.exe) terkadang dapat berhenti menampilkan log pengikatan baru di jendela tampilan. Akibat kerusakan ini, infrastruktur pengikatan .NET (fusi) tidak dapat menulis atau membaca dari log pengikatan. (Masalah ini tidak ditemui jika Anda menggunakan jalur log kustom.) Untuk memperbaiki kerusakan dan memungkinkan fusi menampilkan log pengikatan lagi, hapus cache file internet dengan menghapus file internet sementara dari bagian Riwayat penjelajahan di bawah properti Internet.

Jika aplikasi Anda yang tidak dikelola menghosting runtime bahasa umum dengan menerapkan IHostAssemblyManager antarmuka dan IHostAssemblyStore , entri log tidak dapat disimpan di cache wininet. Untuk melihat entri log untuk host kustom yang mengimplementasikan antarmuka ini, Anda harus menentukan jalur log alternatif.

Untuk mengaktifkan pengelogan untuk aplikasi yang berjalan di kontainer aplikasi Windows

  1. Aktifkan jalur log kustom, seperti yang dijelaskan dalam prosedur sebelumnya. Secara default, aplikasi yang berjalan di kontainer aplikasi Windows memiliki akses terbatas ke hard disk. Direktori yang Anda tentukan akan memiliki akses baca/tulis untuk semua aplikasi dalam kontainer aplikasi.

  2. Pilih kotak centang Aktifkan pengelogan imersif .

    Nota

    Kotak ini hanya diaktifkan pada Windows 8 atau yang lebih baru.

Lihat juga