NET- এ আমি কীভাবে এসেম্বলির বাইন্ড ব্যর্থতা লগিং (ফিউশন) সক্ষম করব?
fuslogvw.exe
কোনও অধিকারের সমস্যা এড়াতে আপনি প্রশাসক হিসাবে চালিয়েছেন তা নিশ্চিত করুন ।
NET- এ আমি কীভাবে এসেম্বলির বাইন্ড ব্যর্থতা লগিং (ফিউশন) সক্ষম করব?
fuslogvw.exe
কোনও অধিকারের সমস্যা এড়াতে আপনি প্রশাসক হিসাবে চালিয়েছেন তা নিশ্চিত করুন ।
উত্তর:
নিম্নলিখিত মানগুলি যোগ করুন
HKEY_LOCAL_MACHINE \ SOFTWARE \ মাইক্রোসফট \ ফিউশন যোগ করুন ডিডব্লর্ড ফোর্সলগের মান 1 সেট করে ডিডব্লর্ড লগফিলারগুলি 1 এ মান সেট করে ডিডব্লর্ড লগআরসোর্সবাইন্ডগুলি 1 এ মান সেট করে ডিডব্লিউড সক্ষম করুন লগটি 1 এ সেট করে স্ট্রিং লগপথ লগগুলির ফোল্ডারে সেট করে মান (যেমন সি: \ ফিউশনলগ \)
ফোল্ডারের নাম এবং ফোল্ডারটি বিদ্যমান থাকার পরে আপনি ব্যাকস্ল্যাশ অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন ।
আপনাকে সেই প্রোগ্রামটি পুনরায় চালু করতে হবে যা আপনি এই রেজিস্ট্রি সেটিংস পড়তে বাধ্য করার জন্য চালাচ্ছেন।
উপায় দ্বারা, যখন প্রয়োজন হয় না তখন ফিউশন লগিং বন্ধ করতে ভুলবেন না।
আমি সাধারণত ফিউশন লগ ভিউয়ার ( ভিজ্যুয়াল স্টুডিও কমান্ড প্রম্পট থেকে Fuslogvw.exe বা শুরু মেনু থেকে ফিউশন লগ ভিউয়ার) ব্যবহার করি - আমার মানক সেটআপটি হ'ল:
c:\FusionLogs
( গুরুত্বপূর্ণ: আপনি অবশ্যই এই ফোল্ডারটি ফাইল সিস্টেমে তৈরি করেছেন তা নিশ্চিত করুন))আপনার কাজ শেষ হয়ে গেলে লগিং বন্ধ করার কথা মনে রাখবেন!
(আমি কেবল এটি একটি অনুরূপ প্রশ্নে পোস্ট করেছি - আমি মনে করি এটি এখানেও প্রাসঙ্গিক))
fuslogvw
কেবল অ্যাডমিন হিসাবেই চলছেন না তবে সঠিক উইন্ডোজ এসডিকে পথ থেকে ভিজ্যুয়াল স্টুডিও প্রকল্পটি ব্যতিক্রম ছুঁড়ে ফেলেছে using এর সিএসপ্রোজটি পরীক্ষা করে দেখুন এবং এসডিকে এর মধ্যে অনুসন্ধান করুন (আমার এসডিকে নোডের নাম দেওয়া হয়েছে TargetFrameworkSDKToolsDirectory
)। মিলে যাওয়া fuslogvw সংস্করণ ব্যবহার করা ব্যতিক্রমগুলি মনে হয় না (যা বোঝায় ...)
যদি আপনার মেশিনে উইন্ডোজ এসডিকে ইনস্টল করা থাকে তবে আপনি মাইক্রোসফ্ট এসডিকে \ সরঞ্জামগুলির অধীনে "ফিউশন লগ ভিউয়ার" পাবেন (ভিস্টা বা উইন্ডোজ 7/8 এর স্টার্ট মেনুতে কেবল "ফিউশন" টাইপ করুন)। এটি চালু করুন, সেটিংস বোতামটি ক্লিক করুন, এবং "লাইন বাঁধাই ব্যর্থতা" বা "সমস্ত বাঁধাই লগ করুন" নির্বাচন করুন।
যদি এই বোতামগুলি অক্ষম থাকে তবে শুরু মেনুতে ফিরে যান, লগ ভিউয়ারকে ডান ক্লিক করুন এবং "প্রশাসক হিসাবে চালান" নির্বাচন করুন।
নিম্নলিখিত রেজিস্ট্রি মান সেট করুন:
[HKEY_LOCAL_MACHINE OF সফটওয়্যার \ মাইক্রোসফ্ট \ ফিউশন! সক্ষমলগ] (ডিডব্লর্ড) থেকে 1
অক্ষম করতে 0 তে সেট করুন বা মানটি মুছুন।
[সম্পাদনা]: উইন্ডোজ রেজিস্ট্রি এডিটর ফর্ম্যাটে নিম্নোক্ত পাঠ্যটি কোনও ফাইলে যেমন ফিউশনএইনেবললগ.রেগ সংরক্ষণ করুন:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
তারপরে উইন্ডোজ এক্সপ্লোরার থেকে ফাইলটি চালান এবং সম্ভাব্য ক্ষতির বিষয়ে সতর্কতাটিকে উপেক্ষা করুন।
আপনি এফএল সক্ষম করতে প্রশাসক হিসাবে এই পাওয়ারশেল স্ক্রিপ্টটি চালাতে পারেন:
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
c:\FusionLog
দির সৃষ্টিটি যুক্ত করেছি যাতে লোকেরা তা ভুলে না যায় ;-)
ফিউশন লগিন সেটিং ভিউয়ার চেঞ্জার স্ক্রিপ্ট কেউ সবচেয়ে ভালো উপায় এই কাজ করতে বার।
ইন ASP.NET , এটা চতুর হয়েছে বার সঠিকভাবে কাজ করার এই পেতে হবে। এই স্ক্রিপ্টটি দুর্দান্ত কাজ করে এবং স্কট হ্যানসেলম্যানের পাওয়ার সরঞ্জাম তালিকায়ও তালিকাভুক্ত ছিল। আমি ব্যক্তিগতভাবে এটি বহু বছর ধরে ব্যবহার করেছি এবং এটি কখনই হতাশ হয় না।
কুৎসিত লগ ফাইলটি ব্যবহার না করে আপনি জিটিইউ এবং কীওয়ার্ড (0x4) দিয়ে ডটনেটআরটাইম প্রাইভেট প্রোভাইডার ( ) চালু করে 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
আপনি এখন পারফিউউতে ইটিএল ফাইলটি খুলুন এবং ইভেন্টস টেবিলের নীচে দেখলে আপনি ফিউশন ডেটা খুঁজে পেতে পারেন:
আমি ফিউশন ++ নামে একটি অ্যাসেমব্লিং বাইন্ডিং লগ ভিউয়ার লিখেছিলাম এবং এটি গিটহাবের উপরে রেখেছি ।
আপনি এখান থেকে বা চকোলেটির ( choco install fusionplusplus
) মাধ্যমে সর্বশেষতম রিলিজ পেতে পারেন ।
আমি আশা করি আপনি এবং এখানকার কিছু দর্শক এটির সাথে কিছু যোগ্য জীবনকাল মিনিট বাঁচাতে পারবেন।
যদি আপনি ইতিমধ্যে লগিং সক্ষম করেছেন এবং আপনি এখনও উইন্ডোজ 7 64 বিটে এই ত্রুটিটি পেয়ে থাকেন তবে আইআইএস 7.5 এ এটি ব্যবহার করে দেখুন:
একটি নতুন অ্যাপ্লিকেশন পুল তৈরি করুন
এই অ্যাপ্লিকেশন পুলের উন্নত সেটিংসে যান
সেট 32-বিট অ্যাপ্লিকেশান সক্ষম করতে ট্রু
এই নতুন পুলটি ব্যবহার করতে আপনার ওয়েব অ্যাপ্লিকেশনটিকে নির্দেশ করুন
কেবলমাত্র একটি ক্ষুদ্র তথ্য যা অন্যকে সাহায্য করতে পারে; আপনি যদি ক্লাস / ইন্টারফেসের উত্তরাধিকারী / প্রয়োগকারী ক্লাসগুলির জন্য কিছু ডিরেক্টরিতে সমস্ত অ্যাসেম্বলি অনুসন্ধান করার প্রান্তে কিছু করেন, তবে নিশ্চিত হন যে আপনি যদি নিজের নিজস্ব কোনও অ্যাসেম্বলির সাথে সম্পর্কিত এই ত্রুটিটি পেয়ে থাকেন তবে আপনি বাসি সমাবেশগুলি পরিষ্কার করেছেন।
দৃশ্যটি এমন কিছু হবে:
সংক্ষেপে: এ --- বোঝা -> বি (বাসি) --- উল্লেখ ---> সি
যদি এটি ঘটে থাকে তবে ত্রুটি বার্তায় একমাত্র টেলটেল সাইন হ'ল নাম স্থান এবং শ্রেণিকাম। এটি নিবিড়ভাবে পরীক্ষা করুন। যদি আপনি এটি আপনার সমাধানের কোথাও খুঁজে না পান তবে আপনি সম্ভবত একটি বাসি অ্যাসেম্বলি লোড করার চেষ্টা করছেন।
যারা কিছুটা অলস তাদের জন্য আমি কখনই এটি সক্ষম করতে চাই তার জন্য এটি ব্যাট ফাইল হিসাবে চালানোর পরামর্শ দিচ্ছি:
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 এর অবস্থান সম্পর্কে ভাবছেন তবে আপনি জানেন যে এটি আপনার কাছে রয়েছে তবে আপনি এটি খুঁজে পেতে পারেন না? আমি গত কয়েক বছরে বারবার ফুসলভের সন্ধান করছিলাম। .NET এ সরানোর পরে FUSION LOG এর সংস্করণটির 4.5 নম্বর বিস্ফোরিত হয়েছে। তার হ'ল এমন জায়গা যেখানে এটি আপনার ডিস্কে পাওয়া যাবে, আপনি যে সফ্টওয়্যারটি ইনস্টল করেছেন তার উপর নির্ভর করে:
সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v8.0A \ বিন \ নেটফেক্স 4.0.০ সরঞ্জামসমূহ \ x64
সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন \ x64
সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v8.1A \ বিন \ নেটফেক্স 4.5.1 সরঞ্জামসমূহ \ x64
সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে s উইন্ডোজ \ v8.0A \ বিন \ নেটফেক্স 4.0.০ সরঞ্জাম
সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v8.1A \ বিন \ নেটফএক্স ৪.৪.১ সরঞ্জামসমূহ
সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন