어셈블리 바인딩 로깅 Assembly Binding Logging

런타임Runtime에 어셈블리 바인딩 오류가 발생하는 경우 아래와 같은 내용을 확인할 수 있습니다.

이 대화 상자 대신 JIT(Just-in-time) 디버깅을 호출하는
방법에 대한 자세한 내용은 이 메시지의 뒷부분을 참조하십시오.

************** 예외 텍스트 **************
System.IO.FileNotFoundException: 파일이나 어셈블리 'SampleNamespace, Version=1.0.0.1, Culture=neutral, PublicKeyToken=aaaaaaaaaaaaaaaa' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 지정된 파일을 찾을 수 없습니다.
파일 이름: 'SampleNamespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aaaaaaaaaaaaaaaa'
   위치: OtherNamespace.MyClass..ctor()

경고: 어셈블리 바인딩 로깅이 꺼져 있습니다.
어셈블리 바인딩 오류 로깅 기능을 사용하려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)를 1로 설정하십시오.
참고: 어셈블리 바인딩 오류 로깅 기능을 사용하도록 설정하면 그렇지 않은 경우보다 성능이 약간 떨어집니다.
이 기능을 끄려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog]를 제거하십시오.



************** 로드된 어셈블리 **************
mscorlib
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34209 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
System
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34238 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34251 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34209 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34209 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34234 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
OtherNamespace.MyClass
    어셈블리 버전: 1.0.0.0
    Win32 버전: N/A
    코드베이스: http://bbon.me/Apps/OtherNamespace.DLL
----------------------------------------
IFW.Windows.Forms
    어셈블리 버전: 4.0.0.6
    Win32 버전: 4.0.0.6
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/IFW.Windows.Forms/v4.0_4.0.0.6__6b3a265306332740/IFW.Windows.Forms.dll
----------------------------------------
mscorlib.resources
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34209 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ko_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    어셈블리 버전: 4.0.0.0
    Win32 버전: 4.0.30319.34209 built by: FX452RTMGDR
    코드베이스: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ko_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT 디버깅 **************
JIT(Just In Time) 디버깅을 사용하려면 이 응용 프로그램 또는 컴퓨터의
config 파일(machine.config)의 jitDebugging 값을
system.windows.forms 섹션에 설정해야 합니다.
또한 응용 프로그램은 디버깅할 수 있도록 컴파일되어야
합니다.

예:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

JIT 디버깅을 사용하면 처리되지 않은 모든 예외는
이 대화 상자에서 처리되지 않고 컴퓨터에 등록된 JIT
디버거에 보내집니다.

응용 프로그램 런타임에 어셈블리 바인딩 오류 로그를 활성화하여 문제를 추적할 수 있습니다.

어떤 어셈블리를 바인딩하려다 오류가 발생하는지는 로깅을 활성화하면 확인할 수 있습니다.

로깅 활성화

레지스트리 편집기를 실행하고 아래 키로 이동 후 값을 추가합니다.

HKLM\SOFTWARE\Microsoft\Fusion

이름 타입
EnableLog DWORD 1
ForceLog DWORD 1
LogFailures DWORD 1
LogResourceBinds DWORD 1
LogPath STRING PATH TO LOG FILES;e.g.)c:\FusionLog\

아래와 같이 레지스트리 값을 추가하면 로깅이 활성화됩니다.

설정이미지

로그확인

레지스트리 값 중 LogPath에 설정한 디렉터리에 로그 파일이 만들어집니다.

탐색기에서 디렉터리로 이동하면 Default, NativeImage 두 개의 하위 디렉터리가 만들어져 있습니다.

그리고, 각 디렉터리에 실행된 어셈블리 이름 디렉터리가 존재하고, HTML 파일로 내용이 저장되어져 있습니다.

HTML파일을 확인하여 실패 내용을 추적할 수 있습니다.

어셈블리 바인딩 로깅 활성화 응용 프로그램

bbonkr: activate-assembly-binding-error-log

Release 1.0.0.0

프로젝트를 빌드하기 위해서는 아래 요구사항을 만족해야 합니다.

  • Visual Studio 2015
  • .NET Framework 4.5.2

Release 파일을 다운로드 받고 실행하면 아래와 같이 간단한 모양으로 실행됩니다.

Check 버튼으로 현재 상태를 확인할 수 있고, Activate, Deactivate 버튼으로 활성, 비활성으로 상태를 변경할 수 있습니다.

활성은 레지스트리에 값을 추가하고, 비활성은 레지스트리 값을 제거합니다.

이 사이트는 광고를 포함하고 있습니다.
광고로 발생한 수익금은 서버 유지 관리에 사용되고 있습니다.

This site contains advertisements.
Revenue generated by the ad servers are being used for maintenance.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다