[C#] .NET에서 어셈블리 바인드 실패 로깅 (Fusion)을 활성화하는 방법

.NET에서 어셈블리 바인드 실패 로깅 (Fusion)을 어떻게 활성화합니까?



답변

다음 값을 추가하십시오

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
더하다:
DWORD ForceLog 설정 값을 1
DWORD LogFailures 설정 값을 1
DWORD LogResourceBinds 값을 1로 설정
DWORD EnableLog 설정 값을 1로 설정
문자열 LogPath 설정 값을 로그 폴더 (예 : C : \ FusionLog \)

폴더 이름 뒤에 백 슬래시포함 하고 폴더가 있는지 확인하십시오 .

해당 레지스트리 설정을 읽도록 실행중인 프로그램을 다시 시작해야합니다.

그건 그렇고, 필요하지 않은 경우 퓨전 로깅을 해제하는 것을 잊지 마십시오.

여기에 이미지 설명을 입력하십시오


답변

나는 보통 퓨전 로그 뷰어 사용 ( Fuslogvw.exe를 A로부터 의 Visual Studio 명령 프롬프트 시작 메뉴에서 또는 퓨전 로그 뷰어) – 내 표준 설정은 다음과 같습니다

  • 관리자로 Fusion Log Viewer 열기
  • 클릭 설정
  • 체크 사용 사용자 정의 로그 경로 체크 박스를
  • 예를 들어, 로그를 기록 할 위치를 입력하십시오 c:\FusionLogs( 중요 : 파일 시스템에서이 폴더를 실제로 작성했는지 확인하십시오).
  • 올바른 수준의 로깅이 설정되어 있는지 확인하십시오 (때때로 모든 바인드를 디스크에 기록을 선택하여 올바르게 작동하는지 확인합니다)
  • 확인을 클릭하십시오
  • 로그 위치 옵션을 사용자 정의로 설정하십시오.

완료되면 로그 오프를 해제하십시오!

(방금 비슷한 질문에 이것을 게시했습니다. 여기도 관련이 있다고 생각합니다.)


답변

컴퓨터에 Windows SDK가 설치되어 있으면 Microsoft SDK \ Tools 아래에 “Fusion Log Viewer”가 있습니다 (Vista 또는 Windows 7/8의 시작 메뉴에 “Fusion”을 입력하면됩니다). 시작하고 설정 버튼을 클릭 한 다음 “바인드 실패 로그”또는 “모든 바인드 로그”를 선택하십시오.

이 버튼이 비활성화되어 있으면 시작 메뉴로 돌아가서 로그 뷰어를 마우스 오른쪽 단추로 클릭 한 다음 “관리자 권한으로 실행”을 선택하십시오.


답변

다음 레지스트리 값을 설정하십시오.

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD)를 1로

비활성화하려면 0으로 설정하거나 값을 삭제하십시오.

[edit] : 다음 텍스트를 Windows 레지스트리 편집기 형식의 파일 (예 : FusionEnableLog.reg)에 저장하십시오.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001

그런 다음 Windows 탐색기에서 파일을 실행하고 가능한 손상에 대한 경고를 무시하십시오.


답변

이 Powershell 스크립트를 관리자 권한으로 실행하여 FL을 활성화 할 수 있습니다.

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 에서는 올바르게 작동하기가 까다로 웠습니다. 이 스크립트는 훌륭하게 작동하며 Scott Hanselman의 Power Tool 목록 에도 포함되어 있습니다. 나는 수년간 개인적으로 사용해 왔으며 결코 실망시키지 않았습니다.


답변

추악한 로그 파일을 사용하는 대신 GUID 와 키워드 (0x4)를 사용 하여 DotnetRuntime Private 공급자 ( )를 켜서 ETW / xperf 를 통해 Fusion 로그를 활성화 할 수도 있습니다 .Microsoft-Windows-DotNETRuntimePrivate763FD754-7086-4DFE-95EB-C01A46FAF4CAFusionKeyword

@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

이제 PerfView 에서 ETL 파일을 열고 Events 테이블을 보면 Fusion 데이터를 찾을 수 있습니다.

PerfView의 퓨전 이벤트