मैं .NET में असेंबली बाइंड फेल लॉगिंग (फ़्यूज़न) कैसे सक्षम करूँ?
fuslogvw.exe
किसी भी अधिकार के मुद्दों से बचने के लिए व्यवस्थापक के रूप में चलते हैं।
मैं .NET में असेंबली बाइंड फेल लॉगिंग (फ़्यूज़न) कैसे सक्षम करूँ?
fuslogvw.exe
किसी भी अधिकार के मुद्दों से बचने के लिए व्यवस्थापक के रूप में चलते हैं।
जवाबों:
निम्न मान जोड़ें
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ फ्यूजन जोड़ें: DWORD ForceLog 1 पर मान सेट करता है DWORD LogFailures 1 पर मान सेट करता है DWORD LogResourceBinds 1 पर मान सेट करता है DWORD EnableLog 1 पर मान सेट करता है लॉग करने के लिए फ़ोल्डर में स्ट्रिंग लॉगपथ सेट मान (जैसे C: \ FusionLog \)
सुनिश्चित करें कि आपने फ़ोल्डर नाम के बाद बैकस्लैश शामिल किया है और यह कि फ़ोल्डर मौजूद है ।
आपको उस प्रोग्राम को पुनः आरंभ करने की आवश्यकता है जिसे आप उन रजिस्ट्री सेटिंग्स को पढ़ने के लिए बाध्य करने के लिए चला रहे हैं।
वैसे, जरूरत न होने पर फ्यूजन लॉगिंग को बंद करना न भूलें।
मैं आमतौर पर एक दृश्य स्टूडियो कमांड प्रॉम्प्ट से फ्यूजन लॉग व्यूअर ( Fuslogvw.exe) या स्टार्ट मेनू से फ्यूजन लॉग व्यूअर का उपयोग करता हूं) - मेरा मानक सेटअप है:
c:\FusionLogs
( महत्वपूर्ण: यह सुनिश्चित करें कि आपने वास्तव में इस फ़ोल्डर को फ़ाइल सिस्टम में बनाया है।)एक बार जब आप कर रहे हैं लॉगिंग बंद करने की बारी याद रखें!
(मैंने इसे इसी तरह के प्रश्न पर पोस्ट किया है - मुझे लगता है कि यह यहां भी प्रासंगिक है।)
fuslogvw
न केवल व्यवस्थापक के रूप में चल रहे हैं, बल्कि सही विंडोज एसडीके पथ से दृश्य स्टूडियो परियोजना को भी फेंक रहे हैं, अपवाद का उपयोग कर रहा है। इसकी csproj की जाँच करें और एसडीके के भीतर खोजें (मेरे sdk नोड का नाम है TargetFrameworkSDKToolsDirectory
)। एक गैर मिलान fuslogvw संस्करण का उपयोग अपवादों को पकड़ने के लिए नहीं लगता है (जो समझ में आता है ...)
यदि आपके पास विंडोज़ एसडीके आपकी मशीन पर स्थापित है, तो आपको माइक्रोसॉफ्ट एसडीके \ टूल्स के तहत "फ्यूजन लॉग व्यूअर" मिलेगा (विस्टा या विंडोज 7/8 पर स्टार्ट मेनू में "फ्यूजन" टाइप करें)। इसे लॉन्च करें, सेटिंग्स बटन पर क्लिक करें, और "लॉग बाइंड विफलता" या "सभी बाइंड को लॉग करें" चुनें।
यदि ये बटन अक्षम हैं, तो प्रारंभ मेनू पर वापस जाएं, लॉग व्यूअर पर राइट-क्लिक करें, और "व्यवस्थापक के रूप में चलाएँ" चुनें।
निम्न रजिस्ट्री मान सेट करें:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) से 1
अक्षम करने के लिए, 0 पर सेट करें या मान हटाएं।
[संपादित करें]: निम्नलिखित फ़ाइल को एक फ़ाइल में सहेजें, जैसे कि FusionEnableLog.reg, Windows रजिस्ट्री संपादक प्रारूप में:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
फिर विंडोज एक्सप्लोरर से फाइल चलाएं और संभावित नुकसान के बारे में चेतावनी को अनदेखा करें।
FL को सक्षम करने के लिए आप इस Powershell स्क्रिप्ट को व्यवस्थापक के रूप में चला सकते हैं:
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath -Value 'C:\FusionLog\' -Type String
mkdir C:\FusionLog -Force
और यह एक निष्क्रिय करने के लिए:
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath
फ्यूजन लॉग सेटिंग व्यूअर परिवर्तक स्क्रिप्ट कोई भी सबसे अच्छा तरीका यह करने के लिए बार है।
में ASP.NET , यह मुश्किल हो गया है बार सही ढंग से काम करने के लिए इसे पाने के लिए पर। यह स्क्रिप्ट महान काम करती है और स्कॉट हैन्समैन के पावर टूल सूची में भी सूचीबद्ध थी । मैं व्यक्तिगत रूप से इसे सालों से इस्तेमाल कर रहा हूं और इसने मुझे कभी निराश नहीं किया।
बदसूरत लॉग फ़ाइल का उपयोग करने के बजाय, आप GUID और कीवर्ड (0x4) के साथ DotnetRuntime निजी प्रदाता ( ) को चालू करके ETW / xperf के माध्यम से फ्यूजन लॉग को सक्रिय कर सकते हैं ।Microsoft-Windows-DotNETRuntimePrivate
763FD754-7086-4DFE-95EB-C01A46FAF4CA
FusionKeyword
@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 -MaxFile 2048 -FileMode Circular -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 15
set XPERF_CreateNGenPdbs=1
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop ClrSession ClrRundownSession
"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
जब आप अब ETL फाइल को परफेक्ट व्यू में खोलते हैं और ईवेंट टेबल के नीचे देखते हैं, तो आप फ्यूजन डेटा पा सकते हैं:
मैंने फ्यूजन ++ नामक एक असेंबली बाइंडिंग लॉग व्यूअर लिखा और इसे GitHub पर डाला ।
आप नवीनतम रिलीज़ यहाँ से या चॉकलेटी ( choco install fusionplusplus
) के माध्यम से प्राप्त कर सकते हैं ।
मुझे आशा है कि आप और यहाँ के कुछ आगंतुक इसके साथ कुछ योग्य जीवनकाल के मिनटों को बचा सकते हैं।
यदि आपके पास पहले से लॉगिंग सक्षम है और आपको अभी भी यह त्रुटि विंडोज 7 64 बिट पर मिलती है, तो इसे IIS 7.5 में देखें:
एक नया एप्लिकेशन पूल बनाएं
इस एप्लिकेशन पूल की उन्नत सेटिंग्स पर जाएं
32-बिट अनुप्रयोग को True पर सक्षम करें सेट करें
इस नए पूल का उपयोग करने के लिए अपने वेब एप्लिकेशन को इंगित करें
बस थोड़ी सी जानकारी जो दूसरों की मदद कर सकती है; यदि आप कक्षाओं / इंटरफ़ेसों को इनहेरिट करने / लागू करने वाली कक्षाओं के लिए कुछ निर्देशिका में सभी असेंबलियों की खोज करने की तर्ज पर कुछ करते हैं, तो सुनिश्चित करें कि यदि आप अपनी एक असेंबली से संबंधित यह त्रुटि प्राप्त करते हैं, तो आप बासी असेंबली को साफ़ कर दें।
परिदृश्य कुछ इस तरह होगा:
संक्षेप में: ए --- लोड -> बी (बासी) --- संदर्भ ---> सी
यदि ऐसा होता है, तो त्रुटि संदेश में एकमात्र गप्पी संकेत नाम और वर्गनाम है। इसे बारीकी से परखें। यदि आप इसे अपने समाधान में कहीं भी नहीं पाते हैं, तो आप बासी विधानसभा को लोड करने की कोशिश कर रहे हैं।
जो लोग थोड़े आलसी हैं, उनके लिए मैं इसे एक बैट फाइल के रूप में चलाने की सलाह देता हूं, जब भी आप इसे सक्षम करना चाहते हैं:
reg add "HKLM\Software\Microsoft\Fusion" /v EnableLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v ForceLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogFailures /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogResourceBinds /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogPath /t REG_SZ /d C:\FusionLog\
if not exist "C:\FusionLog\" mkdir C:\FusionLog
बस अगर आप FusionLog.exe के स्थान के बारे में सोच रहे हैं - आप जानते हैं कि आपके पास यह है, लेकिन आप इसे नहीं खोज सकते? मैं पिछले कुछ वर्षों में FUSLOVW को बार-बार देख रहा था। .NET की ओर जाने के बाद FUSION LOG के वर्जन का 4.5 नंबर फट गया है। उसके स्थान हैं जहाँ यह आपके डिस्क पर पाया जा सकता है, सॉफ्टवेयर पर निर्भर करता है जो आपने स्थापित किया है:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 टूल \ 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 उपकरण \ x 64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 उपकरण
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 उपकरण
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin