다른 어셈블리의 인터페이스를 구현하는 클래스로 어셈블리가 완전히 채워져 있습니다. 예 :빌드가 최적화 된 어셈블리
Main Assembly (Reference to both assemblies)
Shared Assembly
-----IModule
Class Assembly (Reference to shared assembly)
-----unknownType : IModule
-----unknownType2 : IModule
주 어셈블리는 클래스 어셈블리의 모든 형식을 직접 참조하지 않습니다. 내가 참조 클래스 조립 단지 임의의 종류에, 다음이 GetReferencedAssemblies에 표시가있는 경우로드되는,
// Load all referenced assemblies:
Assembly.GetExecutingAssembly().GetReferencedAssemblies()
.Except(AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName()))
.Distinct()
.ToList()
.ForEach(act => Assembly.Load(act));
// Find all instances of IModule in loaded assemblies:
var modules = from asm in AppDomain.CurrentDomain.GetAssemblies()
from provider in asm.GetTypes()
where typeof(IModule).IsAssignableFrom(provider)
...instantiate type etc...
, 제대로 반환 - 나는 즉시 있지만 : 그래서 같은 종류를 찾고 있어요 형식에 대한 참조를 제거하면 빌드 디렉토리로 전송되지 않거나로드가 실패하는 참조 된 어셈블리로 표시되지 않습니다.
VS가이 어셈블리를 출력 디렉터리에 포함하도록 강제 할 수있는 방법이 있습니까? 주 애플리케이션은 클래스 어셈블리 내의 어떤 타입에 대해서도 알지 못한다.
나는 유사한 문제가 있음을 기억하고 프로젝트에서 참조 된 어셈블리에 더미 호출을 추가하는 것이 유일한 해결책이었습니다 ... –
@KevinD : 주 어셈블리는 무엇이 계속 진행되는지 알 필요가 없으므로 클래스 어셈블리에서 클래스 어셈블리의 형식이 그 목적을 위해 특별히 작성되지 않았다면 현실적으로 더미 참조를 추가 할 수 없습니다. 문제는 여기에있는 예제가 단순화되고 그렇게하면 불필요한 복잡성과 진흙이 디자인에 추가된다는 것입니다. – caesay
이것은 솔루션 별 문제입니까? 아니면 임의의 상황에서 재현하기위한 단계를 제공 할 수 있습니까? – Grx70