인터페이스, 추상 클래스, 열거 형, 구조체 등 주어진 유형이 종속되어있는 모든 유형을 찾으려고합니다. 어셈블리를로드하고 그 안에 정의 된 모든 유형의 목록을 인쇄하고 싶습니다. , 그리고 그들의 의존성.CLR 기반 언어 어셈블리에서 특정 유형의 모든 유형 의존성을 찾는 방법은 무엇입니까?
지금까지 저는 CLR 어셈블리가 Mono.Cecil을 사용하여 의존하는 모든 외부 유형을 찾을 수있었습니다.
using System;
using Mono.Cecil;
using System.IO;
FileInfo f = new FileInfo("SomeAssembly.dll");
AssemblyDefinition assemDef = AssemblyFactory.GetAssembly (f.FullName);
List<TypeReference> trList = new List<TypeReference>();
foreach(TypeReference tr in assemblyDef.MainModule.TypeReferences){
trList.Add(tr.FullName);
}
이 목록은 또한 모노 disasembler, 예를 들어 "monodis SomeAssembly.dll --typeref"를 사용하여 얻을 수 있지만 것 나던이 목록은 기본 요소, 예를 들어 System.Void, 선택 System.Int32 등
을 포함하는형식이 동일한 어셈블리에 정의되어 있어도 각 형식을 개별적으로 처리하고 주어진 형식이 종속 된 모든 형식을 가져와야합니다. Mono.Cecil 또는 다른 프로젝트를 사용하여이 작업을 수행 할 수있는 방법이 있습니까?
어셈블리를로드 한 다음 각 정의 된 형식을 반복하고 형식의 일리로드를로드하고 참조를 검색하여 수행 할 수 있음을 알고 있지만 더 좋은 방법이 있다고 확신합니다. 이상적으로는 익명의 내부 클래스에서도 작동합니다.
동일한 어셈블리에 여러 모듈이 정의되어있는 경우에도 작동해야합니다.
감사 Oisin, 내가 NDepend에 대해 알고 는, 그것은 좋은 제품입니다. 종속 형식 목록을 생성하여 다른 도구에 제공 할 수 있습니다. 그러므로 NDepend는 내가 필요한 도구가 아닙니다. –