2009-09-29 2 views
7

타사 어셈블리에 대한 종속성을 일반 .NET 응용 프로그램에 추가하면이를 설치 프로그램에 추가하는 것을 잊기 쉽습니다. 이 문제는 응용 프로그램을 설치 한 후에 만 ​​나타납니다. 시작시 충돌이 발생할 수 있으므로 유용한 정보가 거의 없습니다.시작할 때 .NET 응용 프로그램이 손상되는 누락 된 DLL을 어떻게 찾을 수 있습니까?

설치 프로그램에 어떤 어셈블리를 추가해야 하는지를 알 수있는 최고의 도구와 기술은 무엇입니까?

답변

5

은 인간의 구성 요소, 따라서 오류를 줄일 수 있도록 구축합니다. 매번 자동으로 빌드되면 모든 빌드가 동일하므로 한 번 작동하면 항상 작동합니다. 당신이 충돌의 원인이 밖으로 작업을 도움이되는 도구를 찾고 있다면

우리는 MSBuildCruiseControl.net

같은 도구를 사용하여 Assembly binding (Fusion) log viewer (or fuslogvw)에서 로그를 취할. 응용 프로그램을 시작하기 전에 응용 프로그램을 시작하면 로그 파일 위치를 설정하고 전체 로깅을 설정하면 어셈블리를 바인딩하려는 시도를보고하고 실패를 나열합니다.

+0

내 응용 프로그램은 자동화 된 승인 테스트를 실행하지만 현재 설치 프로그램을 테스트하지 않는 CCNET의 MSBuild를 사용하여 작성됩니다. 가능한 한 빨리 문제를 파악하는 것이 하나의 방법 일 것이라고 생각하지만 문제가 발생했을 때 문제가 무엇인지 찾아내는 데 도움을 청하고 있습니다. – GraemeF

+0

그래서 클라이언트 컴퓨터에서 응용 프로그램이 중단 될 때 .dll이 누락되었다고 알려주는 내용이 있으면 문제가 발생하지 않게됩니다. –

+0

예, 테스트 머신에서 먼저 잘하면! ;) – GraemeF

3

종속성 워커는 응용 프로그램이나 DLL의 종속성 체인을 따라가는 누락 된 부분을 강조하는 훌륭한 유틸리티입니다. 최종 사용자가 사용해야하는 것은 직관적이지 않습니다 만, 사용을 시작하면 누락 된 항목을 직접 잡을 수 있기를 바랍니다. 완전 자동화

http://www.dependencywalker.com/

+5

의존성 워커는 .Net 어셈블리와 함께 사용하면 매우 유용하지 않습니다. –

+1

예, 관리되지 않는 경우에 좋지만 .NET에는 적합하지 않습니다. – GraemeF

0

설치 프로그램의 기능에 따라 다릅니다. VS 통합 설치 프로젝트는 종속 어셈블리를 자동으로 픽업 할 수 있습니다. 설치 프로그램에 유사한 기능이 있는지 확인할 수 있습니다.

반면 VS 프로젝트에 모든 종속성을 출력 디렉토리에 복사하고 거기에서 모든 파일을 설치 프로그램에 포함하도록 지시 할 수 있습니다.

+0

나는 WiX를 사용하고 포함 할 파일을 명시 적으로 나열하고있다. – GraemeF

+0

필자는 도움이 될만한 WiX 도구를 모르고 있으므로 출력 디렉토리에서 모든 파일을 선택하기 위해 제 제안을 계속 따르는 것이 좋습니다. 그게 내가 생각할 수있는 가장 쉬운 방법. 프로젝트가 출력 디렉토리에서 실행되는 경우 대상 시스템에 설치 한 후에도 프로젝트를 수행해야합니다. –

관련 문제