Fuslogvw.exe
 
Fuslogvw.exe 는 닷넷 어셈블리(EXE,DLL) 의 바인딩 정보를 관찰할 수 있는 유틸리티이다. 닷넷 어셈블리가 어떤 버전의 참조를 하고 있는지, GAC 으로부터 바인딩 되는지 잘 살펴볼 수 있는 유용한 도구이다. 
 
이 도구를 이용하여 다음과 같은 특정 오류에 대한 자세한 내용을 볼 수 있다. (MSDN 도움말 참조)
 
"파일을 찾을 수 없습니다." 또는 "버전이 일치하지 않습니다." 등 바인드가 실패한 특정 원인
이름, 응용 프로그램의 루트 디렉터리(AppBase) 및 개인 검색 경로(있는 경우)의 설명 등을 포함하여 바인드를 시작한 응용 프로그램에 대한 정보
도구에서 찾고 있는 어셈블리의 ID
적용된 응용 프로그램, 게시자 또는 관리자 버전 정책 설명
전역 어셈블리 캐시에 어셈블리가 있는지 여부
검색하는 모든 URL 목록
 
물론 이 도구에 대한 설명은 MSDN 도움말에 잘 나와 있지만, MSDN 을 즐겨하지 않는 분에겐 스크린샷과 함께 설명이 잘 된 다음의 URL 을 참고 하면 될 것이다.
 
Loner’s .NET Blog - Fusion Log Viewer: Fuslogvw.exe
http://www.simpleisbest.net/archive/2006/05/10/627.aspx
 
MSDN - 어셈블리 바인딩 로그 뷰어 ( fuslogvw.exe )
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/cptutorials/html/assembly_binding_log_viewer_deployment.asp
 
특히 스마트클라이언트에서 참조된 어셈블리가 제대로 다운로드 되었는지, Cache 에서 참조되었는지, 혹은 GAC 에서 참조되었는지 잘 알 수 있다.
 
이 부분에 대해선 이미 본 블로그의
 
스마트클라이언트 다운로드 비교 ( Infragistics 컴포넌트 ) 아티클에서 잘 보여주고 있다.
http://umc.pe.kr/article/2007/09/20/SmartClient-Download-With-Infragistics-Component.aspx
 
 
또 다른 활용 방안
 
위에서 살펴 보았듯이, 어셈블리의 바인딩 정보를 볼 수 있는 도구가 fuslogvw.exe 라고 하였다. 만약 하나의 어셈블리가 여러 개의 어셈블리를 참조하고 있게 되면, 순차적으로 log 폴더에 각 어셈블리별로 바인딩 되는 정보를 볼 수 있다. 더불어, 해당 어셈블리가 참조하는 .NET Framework 어셈블리의 바인딩 정보마저 로그에 기록된다. 때문에, 바인딩 될 .NET Framework 2.0 의 어셈블리가 .NET Framework 1.1, 1.0 어셈블리를 참조하게 되어, 스마트클라이언트가 제대로 동작하지 않게 되는 경우도 이 도구로 원인을 알 수 있다.
 
 
[그림1] Fiddler 다운로드 스크린샷
 
위 그림은 현재 본인이 투입되어 있는 프로젝트의 스마트클라이언트 다운로드 캡춰이다. ( 보안상 모자이크 처리 하였으니 양해 바랍니다 ) 쓸대없는 리소스를 찾아헤메는 보기싫은 404 오류는 이미지를 캡춰하기 위해 제거한 상태이다.
 
지금 위 [그림1] 을 보여주는 이유는 fustion log viewer 가 바인딩 시점의 시간을 알려주기 때문에, 그것에 아이디어를 얻어 어셈블리가 다운로드 순차적으로 다운로드 하며, 웹페이지에 엠베디드 되기까지의 시간을 재기 위한 것이다.
 
방법은 무척 간단하다. Fuslogvw.exe 의 설정에서 모든 바인딩을 디스크에 기록하기만 하면 된다. Iexplore.exe 에 의해 바인딩 되는 여러 어셈블리는 iexplore.exe 라는 폴더에 참조된 .NET Framework 와 어셈블리의 모든 로그가 기록 될 것이다. 모든 어셈블리의 로그가 html 파일로 기록이 되었다면, 폴더의 파일들을 시간순으로 정렬해보자. 그럼, 가장 늦은 시간의 어셈블리 바인딩 시간과 가장 빠른 시간의 어셈블리 바인딩의 시간차를 구하게 되면 바인딩 총 시간을 구할 수가 있다. 모든 Download Cache 와 인터넷 임시 파일을 삭제한 후, 최초 어셈블리 다운로드의 시간과 Download Cache 로부터의 바인딩 시간 등 비교할 수도 있다.
 
 
마치며…
 
본 블로그의 아티클을 보게 된다면, 반드시 Loner’s .NET Blog 와 MSDN 의 링크를 꼭 확인하여, 좀 더 정확한 정보를 얻길 바란다. 위 링크에는 레지스트리를 수정하여 공용 언어 런타임의 바인딩 로그를 기록하는 방법 또한 수록되어 있다.
Posted by 땡초 POWERUMC

댓글을 달아 주세요