@Will - terima kasih sudah berbagi! Sebagai bonus - pastikan Anda menjalankan fuslogvw.exesebagai administrator untuk menghindari masalah hak.
SliverNinja - MSFT
13
@Apakah saya tidak setuju bahwa menginstal fuslogvw adalah jawaban "terbaik". Jika Anda bisa mendapatkan hanya alat tanpa harus menginstal seluruh Windows SDK pada apa yang mungkin bukan lingkungan pengembangan maka Anda ada benarnya.
Coxy
2
@Will Tentu saja, tetapi jawaban yang Anda tautkan tidak mencakup semua itu.
Coxy
8
@ Akan tolong jangan terlalu kekanak-kanakan tentang hal itu. Kaulah yang mencoba mengumpulkan perwakilan dengan mempromosikan jawaban yang, meskipun bermanfaat, masyarakat telah dinilai kurang bermanfaat daripada yang lain, yang jauh lebih mudah dan yang lainnya praktis sama.
Coxy
Jawaban:
868
Tambahkan nilai berikut ke
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
Menambahkan:
DWORD ForceLog menetapkan nilai ke 1
DWORD LogFailures menetapkan nilai ke 1
DWORD LogResourceBinds menetapkan nilai ke 1
DWORD EnableLog menetapkan nilai ke 1
String LogPath menetapkan nilai ke folder untuk log (mis. C: \ FusionLog \)
Pastikan Anda menyertakan backslash setelah nama folder dan Folder itu ada .
Anda harus memulai kembali program yang sedang Anda jalankan untuk memaksanya membaca pengaturan registri tersebut.
Ngomong-ngomong, jangan lupa mematikan fusion logging saat tidak diperlukan.
Solusi Gary bekerja untuk saya walaupun saya juga harus mengikuti dengan mengatur ulang IIS. Catatan saya mengkonfigurasi ini di lingkungan yang bersih di mana saya tidak ingin menginstal SDK dan sejenisnya.
Michhes
5
Telah dilaporkan oleh beberapa orang bahwa perubahan registri tidak langsung dilakukan. Sudahkah Anda mencoba menyalakan Fusion logging lalu me-reboot?
Gary Kindel
54
Anda harus memulai kembali program apa pun yang sedang Anda jalankan agar dapat membaca pengaturan registri tersebut
Orion Edwards
50
The Fusion Log Viewer melakukan semua itu untuk Anda. Pergi ke Mulai -> Program -> Visual Studio xxxx> Alat Visual Studio> Visual Studio Command Prompt (jalankan sebagai admin) dan ketik "fuslogvw". Di Pengaturan Anda menyesuaikan logging.
r3mark
10
Untuk menghidupkan / mematikan logging berguna, saya telah membuat file .reg, yang didasarkan pada jawaban Gary Kindel: mengaktifkan dan menonaktifkan .
Igor Kustov
271
Saya biasanya menggunakan Fusion Log Viewer ( Fuslogvw.exe dari prompt perintah Visual Studio atau Fusion Log Viewer dari menu mulai) - pengaturan standar saya adalah:
Buka Fusion Log Viewer sebagai administrator
Klik pengaturan
Periksa Aktifkan kustom log path kotak centang
Masukkan lokasi yang Anda ingin log untuk menulis, misalnya, c:\FusionLogs( Penting: pastikan Anda benar-benar membuat folder ini di sistem file.)
Pastikan tingkat logging yang benar sudah aktif (Saya kadang-kadang cukup pilih Log semua bind ke disk hanya untuk memastikan semuanya bekerja dengan benar)
Klik OK
Atur opsi lokasi log ke Kustom
Ingatlah untuk mematikan pencatatan setelah Anda selesai!
(Saya baru saja memposting ini pada pertanyaan serupa - saya pikir itu relevan di sini juga.)
Perhatikan bahwa dalam kasus di mana Anda meng-hosting runtime sendiri dari aplikasi asli, Anda akan diminta untuk menggunakan jalur log khusus untuk beberapa alasan, jika tidak, Anda tidak akan mendapatkan apa pun yang dicatat.
jpierson
Setidaknya dalam situasi saya, saya sebenarnya tidak perlu mengatur jalur log kustom. Yang harus saya lakukan adalah menyalakan log on, misalnya, "Log semua mengikat ke disk" pada dialog pengaturan.
Josh
42
Jalankan sebagai Administrator diperlukan dalam kasus saya, jika tidak semua opsi dinonaktifkan.
vezenkov
2
Catatan: buat folder sebagai Admin!
Tabrock
6
Pastikan Anda menjalankan fuslogvwtidak hanya sebagai admin tetapi juga dari jalur Windows SDK yang benar proyek Visual Studio melempar pengecualian menggunakan. Periksa csprojnya dan cari SDK di dalamnya (node sdk saya bernama TargetFrameworkSDKToolsDirectory). Menggunakan versi fuslogvw yang tidak cocok tampaknya tidak menangkap pengecualian (yang masuk akal ...)
Veverke
191
Jika Anda menginstal Windows SDK di mesin Anda, Anda akan menemukan "Fusion Log Viewer" di bawah Microsoft SDK \ Tools (cukup ketik "Fusion" di menu mulai di Vista atau Windows 7/8). Luncurkan, klik tombol Pengaturan, dan pilih "Log bind failure" atau "Log all bind".
Jika tombol-tombol ini dinonaktifkan, kembali ke menu mulai, klik kanan Penampil Log, dan pilih "Jalankan sebagai Administrator".
Bukan berarti entri itu mungkin tidak ada - Anda harus membuatnya. Setidaknya, saya lakukan ketika saya akan menjawab pertanyaan ini sebelum kecelakaan pagi ini :)
Jon Skeet
3
Apa yang dilakukan! berarti? Kunci atau nilai? Bagaimana dengan sistem 64 bit?
Bruno Martinez
48
sebenarnya, ini berhasil ... Anda hanya perlu menjalankan kata kunci iisreset untuk membuatnya berfungsi.
Nick DeMayo
4
@Norman: Karena pengaturan khusus ini digunakan untuk membuat kesalahan Asp.Net menunjukkan pesan kesalahan rakitan yang mengikat di halaman kesalahan, bukan untuk menyimpan log ke file. @OP: +1. Diedit untuk memasukkan file .reg. Itu! format adalah salah satu yang belum pernah saya lihat, kecuali dalam pesan kesalahan yang mengirim saya ke halaman ini untuk mencari jawaban.
Brian
2
Anda tidak perlu mengatur ulang IIS - cukup kumpulan aplikasi yang relevan. Atau setidaknya itu yang perlu saya lakukan.
Kenny Evitt
81
Anda dapat menjalankan skrip Powershell ini sebagai administrator untuk mengaktifkan FL:
Terima kasih! Saya telah mengizinkan diri saya untuk menempatkan perintah Anda ke intisari ini . Dan saya menambahkan pembuatan c:\FusionLogdir agar orang tidak lupa bahwa ;-)
Oliver
Aturan baris perintah! Saya dapat dengan cepat memutar ulang ini menggunakan teknologi reusability kode sejauh ini yang terbaik yang ditemukan yang disebut "cut and paste". Terima kasih.
Di ASP.NET , kadang-kadang sulit untuk membuatnya berfungsi dengan benar. Script ini berfungsi dengan baik dan terdaftar di daftar Power Tool Scott Hanselman juga. Saya pribadi menggunakannya selama bertahun-tahun dan tidak pernah mengecewakan saya.
ps PASTIKAN Anda menonaktifkannya setelah menjalankan atau folder ini bisa menjadi cukup besar
Adam Tuliper - MSFT
inilah mengapa saya menggunakan ETW, untuk hanya mencatat data jika saya benar-benar membutuhkannya, tidak setiap saat dalam file log besar yang jelek.
magicandre1981
13
Alih-alih menggunakan file log jelek, Anda juga dapat mengaktifkan log Fusion melalui ETW / xperf dengan mengaktifkan penyedia DotnetRuntime Private ( Microsoft-Windows-DotNETRuntimePrivate) dengan GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CAdan FusionKeywordkata kunci (0x4) aktif.
@echo off
echo Press a key when ready to start...
pause
echo .
echo ...Capturing...
echo ."C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-on PROC_THREAD+LOADER+PROFILE -stackwalk Profile-buffersize 1024-MaxFile2048-FileModeCircular-f Kernel.etl
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-start ClrSession-on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+763FD754-7086-4DFE-95EB-C01A46FAF4CA:0x4:0x5-f clr.etl -buffersize 1024
echo Press a key when you want to stop...
pause
pause
echo .
echo ...Stopping...
echo ."C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-start ClrRundownSession-on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+Microsoft-Windows-DotNETRuntimeRundown:0x118:0x5:'stack'-f clr_DCend.etl -buffersize 1024
timeout /t 15set XPERF_CreateNGenPdbs=1"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-stop ClrSessionClrRundownSession"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-stop
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe"-merge kernel.etl clr.etl clr_DCend.etl Result.etl -compress
del kernel.etl
del clr.etl
del clr_DCend.etl
Saat Anda sekarang membuka file ETL di PerfView dan melihat di bawah tabel Events, Anda dapat menemukan data Fusion:
@YuriBondarchuk mengaktifkan ini sesuai permintaan dan Anda memiliki lebih banyak data di ETL (proses lain, data versi file) sehingga Anda dapat memberikan file t pengguna lain dan mereka bisa mendapatkan informasi JAUH lebih banyak dibandingkan dengan log fusi normal
***, kau selamatkan hariku, aku butuh sekitar 8 jam untuk menyelesaikan masalah ini. terimakasih banyak. :)
Dika Arta Karunia
3
Hanya sedikit info yang dapat membantu orang lain; jika Anda melakukan sesuatu di sepanjang garis pencarian semua majelis di beberapa direktori untuk kelas yang mewarisi / mengimplementasikan kelas / antarmuka, maka pastikan Anda membersihkan majelis basi jika Anda mendapatkan kesalahan ini berkaitan dengan salah satu majelis Anda sendiri.
Skenario akan menjadi seperti:
Majelis A memuat semua majelis dalam beberapa folder
Majelis B di folder ini basi, tetapi merujuk perakitan C
Majelis C ada, tetapi ruang nama, nama kelas, atau detail lainnya mungkin telah berubah dalam waktu yang telah berlalu sejak perakitan B menjadi basi (dalam kasus saya namespace diubah melalui proses refactoring)
Singkatnya: A --- memuat -> B (basi) --- referensi ---> C
Jika ini terjadi, satu-satunya tanda tanda adalah namespace dan classname dalam pesan kesalahan. Periksalah dengan cermat. Jika Anda tidak dapat menemukannya di mana pun dalam solusi Anda, Anda kemungkinan mencoba memuat rakitan basi.
Kalau-kalau Anda bertanya-tanya tentang lokasi FusionLog.exe - Anda tahu Anda memilikinya, tetapi Anda tidak dapat menemukannya? Saya mencari FUSLOVW dalam beberapa tahun terakhir berulang kali. Setelah pindah ke .NET 4.5 jumlah versi FUSION LOG telah meledak. Ini adalah tempat di mana ia dapat ditemukan di disk Anda, tergantung pada perangkat lunak yang telah Anda instal:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Alat \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Alat
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
fuslogvw.exe
sebagai administrator untuk menghindari masalah hak.Jawaban:
Tambahkan nilai berikut ke
Pastikan Anda menyertakan backslash setelah nama folder dan Folder itu ada .
Anda harus memulai kembali program yang sedang Anda jalankan untuk memaksanya membaca pengaturan registri tersebut.
Ngomong-ngomong, jangan lupa mematikan fusion logging saat tidak diperlukan.
sumber
Saya biasanya menggunakan Fusion Log Viewer ( Fuslogvw.exe dari prompt perintah Visual Studio atau Fusion Log Viewer dari menu mulai) - pengaturan standar saya adalah:
c:\FusionLogs
( Penting: pastikan Anda benar-benar membuat folder ini di sistem file.)Ingatlah untuk mematikan pencatatan setelah Anda selesai!
(Saya baru saja memposting ini pada pertanyaan serupa - saya pikir itu relevan di sini juga.)
sumber
fuslogvw
tidak hanya sebagai admin tetapi juga dari jalur Windows SDK yang benar proyek Visual Studio melempar pengecualian menggunakan. Periksa csprojnya dan cari SDK di dalamnya (node sdk saya bernamaTargetFrameworkSDKToolsDirectory
). Menggunakan versi fuslogvw yang tidak cocok tampaknya tidak menangkap pengecualian (yang masuk akal ...)Jika Anda menginstal Windows SDK di mesin Anda, Anda akan menemukan "Fusion Log Viewer" di bawah Microsoft SDK \ Tools (cukup ketik "Fusion" di menu mulai di Vista atau Windows 7/8). Luncurkan, klik tombol Pengaturan, dan pilih "Log bind failure" atau "Log all bind".
Jika tombol-tombol ini dinonaktifkan, kembali ke menu mulai, klik kanan Penampil Log, dan pilih "Jalankan sebagai Administrator".
sumber
Tetapkan nilai registri berikut:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) ke 1
Untuk menonaktifkan, atur ke 0 atau hapus nilainya.
[Sunting]: Simpan teks berikut ke file, misalnya FusionEnableLog.reg, dalam Format Editor Registri Windows:
Kemudian jalankan file dari windows explorer dan abaikan peringatan tentang kemungkinan kerusakan.
sumber
Anda dapat menjalankan skrip Powershell ini sebagai administrator untuk mengaktifkan FL:
dan ini untuk menonaktifkan:
sumber
c:\FusionLog
dir agar orang tidak lupa bahwa ;-)The Fusion Log Pengaturan Viewer changer naskah adalah bar tidak ada cara terbaik untuk melakukan hal ini.
Di ASP.NET , kadang-kadang sulit untuk membuatnya berfungsi dengan benar. Script ini berfungsi dengan baik dan terdaftar di daftar Power Tool Scott Hanselman juga. Saya pribadi menggunakannya selama bertahun-tahun dan tidak pernah mengecewakan saya.
sumber
Alih-alih menggunakan file log jelek, Anda juga dapat mengaktifkan log Fusion melalui ETW / xperf dengan mengaktifkan penyedia DotnetRuntime Private (
Microsoft-Windows-DotNETRuntimePrivate
) dengan GUID763FD754-7086-4DFE-95EB-C01A46FAF4CA
danFusionKeyword
kata kunci (0x4) aktif.Saat Anda sekarang membuka file ETL di PerfView dan melihat di bawah tabel Events, Anda dapat menemukan data Fusion:
sumber
Saya menulis sebuah penampil log yang mengikat perakitan bernama Fusion ++ dan meletakkannya di GitHub .
Anda bisa mendapatkan rilis terbaru dari sini atau melalui chocolatey (
choco install fusionplusplus
).Saya harap Anda dan beberapa pengunjung di sini dapat menghemat beberapa menit seumur hidup yang layak dengannya.
sumber
Jika Anda telah mengaktifkan logging dan Anda masih mendapatkan kesalahan ini pada Windows 7 64 bit, coba ini di IIS 7.5:
Buat kumpulan aplikasi baru
Pergi ke Pengaturan Lanjut dari kumpulan aplikasi ini
Setel Aktifkan Aplikasi 32-Bit ke True
Arahkan aplikasi web Anda untuk menggunakan kumpulan baru ini
sumber
Hanya sedikit info yang dapat membantu orang lain; jika Anda melakukan sesuatu di sepanjang garis pencarian semua majelis di beberapa direktori untuk kelas yang mewarisi / mengimplementasikan kelas / antarmuka, maka pastikan Anda membersihkan majelis basi jika Anda mendapatkan kesalahan ini berkaitan dengan salah satu majelis Anda sendiri.
Skenario akan menjadi seperti:
Singkatnya: A --- memuat -> B (basi) --- referensi ---> C
Jika ini terjadi, satu-satunya tanda tanda adalah namespace dan classname dalam pesan kesalahan. Periksalah dengan cermat. Jika Anda tidak dapat menemukannya di mana pun dalam solusi Anda, Anda kemungkinan mencoba memuat rakitan basi.
sumber
Bagi mereka yang agak malas, saya sarankan menjalankan ini sebagai file bat kapan saja Anda ingin mengaktifkannya:
sumber
Kalau-kalau Anda bertanya-tanya tentang lokasi FusionLog.exe - Anda tahu Anda memilikinya, tetapi Anda tidak dapat menemukannya? Saya mencari FUSLOVW dalam beberapa tahun terakhir berulang kali. Setelah pindah ke .NET 4.5 jumlah versi FUSION LOG telah meledak. Ini adalah tempat di mana ia dapat ditemukan di disk Anda, tergantung pada perangkat lunak yang telah Anda instal:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Alat \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Alat
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
sumber
Dalam kasus saya membantu ketik nama disk dalam huruf kecil
Salah - C: \ someFolder
Benar - c: \ someFolder
sumber