특정 인터페이스를 구현하는 모든 클래스에 대해로드 된 어셈블리를 모두 검색하는 프로젝트가 있습니다. 그런 다음 해당 클래스의 인스턴스를 만들고 인터페이스의 메서드를 호출합니다. 이 코드는 테스트 환경의 간단한 프로젝트에서 훌륭하게 실행되었습니다.현재 도메인의 .NET 어셈블리를 찾을 수 없습니다.
public static List<Type> GetLoadedTypes(Type targetType)
{
var types = AppDomain.CurrentDomain.GetAssemblies().ToList()
.SelectMany(a => a.GetTypes())
.Where(t => targetType.IsAssignableFrom(t)).ToList();
return types;
}
I가이 코드를 삽입하고 도메인의 어셈블리 중 하나를 찾을 수 없기 때문에 LINQ 쿼리가 실패 할 다른 프로젝트 : 그것의 핵심은 다음과 같은 기능입니다.
System.IO.FileNotFoundException은 ', Microsoft.Practices.ObjectBuilder 버전 = 1.0.51206.0, 문화 = 중립, PublicKeyToken은 = b03f5f7f11d50a3a'파일 또는 어셈블리를로드 할 수 없습니다 또는 해당 종속성 중 하나. 시스템이 지정된 파일을 찾을 수 없습니다.
내 프로젝트에서이 어셈블리를 직접 참조하지 않습니다. 어떤 어셈블리가 그것을 참조하는지 어떻게 알 수 있습니까? 어셈블리를 찾을 수없는 경우 어떻게 어셈블리를 도메인에 추가 할 수 있습니까?
편집 : 나는이 프로젝트에 엔터프라이즈 라이브러리를 사용하고 있지만 이미 Microsoft.Practices.ObjectBuilder2.dll를 참조하고있다. 외관상으로는 두 어셈블리간에 차이가 있습니다. 그 맞습니까?
감사합니다. Jeff
... 나는 .NET 3.5을 사용하고 – Aliostad