c# - 있습니다 - 어셈블리가 필수 구성 요소로 표시되려면 강력하게 서명되어야 합니다




.NET에서 어셈블리 바인딩 실패 로깅(Fusion)을 활성화하는 방법 (7)

.NET에서 어셈블리 바인딩 실패 로깅 (Fusion)을 활성화하려면 어떻게해야합니까?


나는 보통 퓨전 로그 뷰어 (Visual Studio 명령 프롬프트의 Fuslogvw.exe 또는 시작 메뉴의 퓨전 로그 뷰어)를 사용한다. 나의 표준 설정은 다음과 같다 :

  • 관리자로 퓨전 로그 뷰어 열기
  • 클릭 설정
  • 사용자 정의 로그 경로 사용 확인란을 선택하십시오.
  • 로그에 기록 할 위치를 입력하십시오 (예 c:\FusionLogs 중요 : 파일 시스템에이 폴더가 실제로 만들어 졌는지 확인하십시오.
  • 올바른 수준의 로깅이 설정되어 있는지 확인하십시오 (때로는 모든 항목이 디스크 에 로깅 만 선택하면 올바르게 작동합니다)
  • 확인을 클릭하십시오.
  • 로그 위치 옵션을 Custom으로 설정하십시오.

완료되면 로그 오프하는 것을 잊지 마십시오!

(방금 비슷한 질문에이 글을 올렸습니다. 여기에도 관련이 있습니다.)


다른 사람들을 도울 수있는 작은 정보. 클래스 / 인터페이스를 상속 / 구현하는 클래스에 대해 일부 디렉토리의 모든 어셈블리를 검색하는 과정에서 뭔가를 수행하는 경우 자체 어셈블리 중 하나와 관련된이 오류가 발생하면 오래된 어셈블리를 정리해야합니다.

시나리오는 다음과 같습니다.

  1. 어셈블리 A는 일부 폴더의 모든 어셈블리를로드합니다.
  2. 이 폴더의 B 어셈블리는 오래되었지만 어셈블리 C를 참조합니다.
  3. 어셈블리 C는 있지만 네임 스페이스, 클래스 이름 또는 다른 세부 사항은 어셈블리 B가 부실화 된 이후에 변경되었을 수 있습니다 (제 경우에는 리팩토링 프로세스를 통해 네임 스페이스가 변경되었습니다)

간단히 말해서 : A --- loaded -> B (stale) --- references ---> C

이 경우 오류 메시지의 네임 스페이스와 클래스 이름 만 나타납니다. 그것을 면밀히 조사하십시오. 솔루션의 어느 위치에서도 찾을 수없는 경우 부실 어셈블리를로드하려고 할 가능성이 큽니다.


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

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

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

[편집] : Windows 레지스트리 편집기에서 FusionEnableLog.reg와 같은 파일에 다음 텍스트를 저장하십시오. 형식 :

Windows Registry Editor Version 5.00

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

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


당신이 FusionLog.exe의 위치에 대해 궁금해하는 경우를 대비하여 - 당신은 그것을 가지고 있지만 그것을 찾을 수 없다는 것을 알고 있습니까? 지난 몇 년 동안 계속해서 FUSLOVW를 찾고있었습니다. FUSION LOG 버전의 .NET 4.5 버전으로 이동 한 후 폭발했습니다. 그녀는 설치 한 소프트웨어에 따라 디스크에서 찾을 수있는 장소입니다.

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 도구 \ x64

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


이 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

주 : LogPath 항목에 제공된 디렉토리가 있는지 확인하십시오. 디렉토리가 존재하지 않으면 로그를 검색 할 수 없습니다.

그리고 이것을 비활성화하십시오 :

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

이미 로깅을 사용할 수 있고 Windows 7 64 비트에서이 오류가 계속 발생하면 IIS 7.5에서 다음을 시도하십시오.

  1. 새 응용 프로그램 풀 만들기

  2. 이 응용 프로그램 풀의 고급 설정으로 이동하십시오.

  3. 32 비트 응용 프로그램 활성화True로 설정

  4. 이 새 풀을 사용하도록 웹 응용 프로그램을 지정하십시오.






assemblies