[windows] DLL 의존성을 확인하는 방법?



Answers

Visual Studio 도구 (VC \ bin 폴더)에서 dumpbin 을 사용하면 다음을 수행 할 수 있습니다.

dumpbin /dependents your_dll_file.dll
Question

때로는 작은 프로젝트를 할 때주의를 기울이지 않고 실수로 DLL에 대한 종속성을 추가합니다. "일부 DLL"이 없기 때문에이 프로그램을 친구 나 다른 사람들에게 발송하면 "작동하지 않습니다". 프로그램이 내 시스템에서 DLL을 찾을 수는 있지만 DLL에서는 찾을 수 없기 때문에 이것은 당연한 것입니다.

DLL 종속성에 대한 실행 파일을 검색하거나 이러한 끔찍한 상황을 방지하기위한 테스트를 위해 "깨끗한"DLL이없는 환경에서 프로그램을 실행할 수있는 프로그램 / 스크립트가 있습니까?




Google에서 "depends.exe"를 검색하십시오.이 유틸리티를 처리 할 수있는 작은 유틸리티입니다.




개발 컴퓨터에서 프로그램을 실행하고 Sysinternals Process Explorer를 실행할 수 있습니다. 아래쪽 창에는 여러 가지 이유로로드 된 DLL과 현재 경로가 표시됩니다. 배포 패키지를 실행하는 경우 잘못된 경로에서 참조되는 DLL이 표시됩니다 (즉, 올바르게 패키지되지 않은 경우).

현재 우리 회사는 Visual Studio Installer 프로젝트를 사용하여 종속성 트리를 살펴본 후 느슨한 파일을 프로그램으로 출력합니다. VS2013에서는 이제 확장 프로그램입니다. https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d . 그런 다음 이러한 느슨한 파일을보다 포괄적 인 설치 프로그램으로 패키지화합니다. 그러나 최소한 설치 프로그램은 모든 닷 넷 종속성을 프로젝트에 투영하여 한 지점에 놓고 상황이 누락 될 때 경고합니다.




NDepend는 이미 Jesse에 의해 언급되었지만 (.NET 코드를 분석하는 경우) 정확히 어떻게 도움이되는지 설명 할 수 있습니다.

DLL 종속성에 대한 실행 파일을 검색하거나 이러한 끔찍한 상황을 방지하기위한 테스트를 위해 "깨끗한"DLL이없는 환경에서 프로그램을 실행할 수있는 프로그램 / 스크립트가 있습니까?

NDepend 프로젝트 속성 패널에서 분석 할 응용 프로그램 어셈블리 (녹색)를 정의하고 NDepend는 응용 프로그램 어셈블리 (파란색)로 사용되는 타사 어셈블리를 유추 합니다. 응용 프로그램 및 타사 어셈블리를 검색 할 디렉터리 목록이 제공됩니다.

타사 어셈블리가 이러한 디렉터리에 없으면 오류 모드가됩니다. 예를 들어 .NET Fx 디렉토리 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 제거하면 .NET Fx 타사 어셈블리가 해결되지 않은 것을 볼 수 있습니다.

면책 조항 : 나는 NDepend를 위해 일한다.




  1. "Depends"라는 프로그램이 있습니다.
  2. cygwin을 설치했다면, ldd file.exe보다 간단한 것은 없습니다.



Related