2008-09-09 11 views
1

.net 프로젝트의 모든 필수 어셈블리를 설치 파일로 nsis에 패키지 할 준비가 된 폴더로 가져 오는 방법이 있습니까?응용 프로그램에 필요한 어셈블리 목록 얻기

리플렉션을 사용하여 dll 목록을 가져 오는 작은 콘솔 앱을 작성하려고했지만 dll이 .net 프레임 워크에서 왔는지 아닌지를 판별하는 확실한 방법을 찾지 못했습니다.

대답은 Visual Studio에서 모든 종속성을 출력하는 간단한 전환 또는이를 수행 할 수있는 독립형 응용 프로그램이나 Nsis 용 플러그인 또는 내가 놓친 반성에 대한 정보 일 수 있습니다.

+0

dll이 .net 프레임 워크에서 왔는지 아닌지를 결정하는 확실한 방법의 측면에서 볼 때 가장 좋은 방법은 mscorlib가 "C : \ WINDOWS \ Microsoft"인 Assembly 객체의 Codebase 속성을 사용하는 것입니다. .net 프레임 워크. 그러나 모든 .net 프레임 워크 어셈블리에 적용되지는 않습니다. –

+0

NSIS 설치 프로그램이 무엇인지에 따라주의해야합니다. 실수로 설치 프로그램에 DLL을 포함시키는 경우가 있습니다 –

답변

1

Visual Studio (2005 이상 - 지금 당장 사용하고있는 프로젝트)에서 프로젝트에 연결된 각 참조에는 "로컬 복사"라는 속성이 있습니다.이 속성은 true/false로 설정할 수 있습니다. true이면 dll을 현재 구성 디렉토리로 복사합니다.

0

Dependency Walker이 필요합니다. 또는 Depends.Net

+1

종속성 워커는 어셈블리 참조를 확인하지 않습니다 (http://www.dependencywalker.com/faq.html 참조). –

1

이 경우 NDepend을 사용할 수 있습니다. 다운로드하고 새로운 NDepend 프로젝트를 빌드하고 & 어셈블리를 Application Assemblies 데이터 그리드보기로 끌어다 놓으면 응용 프로그램 어셈블리 집합에 필요한 계층 어셈블리를 즉각적으로 확인하는 NDepend가 표시됩니다.

또한 NDepend에 표시 할 폴더 목록을 제공 할 수도 있습니다. 만약 티어 어셈블리를 찾을 수 없다면, NDepend는 찾을 수없는 것으로 표시 할 것입니다. 이것은 귀중한 정보라고 생각합니다.