2013-12-11 8 views
0

내 클라이언트가 WPF 앱이의이 W 말을 할 수있는 시나리오를 가지고, 3 어셈블리 AB, W에 노출 될 수 없습니다 C는, 따라서 3 어셈블리는 콘크리트 공장에서 참조, F라고 말하는이있는 필요한 인스턴스를 만들고 W에게 제공합니다.참조 된 어셈블리를 다른 참조 된 어셈블리에로드하는 방법?

F에 리플렉션을 사용하여 3 개의 개체를 생성하고 있습니다. 다음은

내가 WA을 참조하는 경우

return (IClass)Activator.CreateInstance(Assembly.Load("A").GetType("A.AClass"), 
BindingFlags.NonPublic | BindingFlags.Instance, null, null, null); 

코드가 작동하는 코드이지만, AF에서 참조 할 때 (내가 Assembly.GetExecutingAssembly().GetReferencedAssemblies()로 확인할 건너 A가로드되지 (System.IO.FileNotFound Exception)를 작동하지 않습니다).

나는 Assembly이 필요하지 않은 경우로드 할 수 없다고 읽었습니다. 그런데 내 WPF 클라이언트가 어떻게 어셈블리를로드합니까? 예상되는 동작 인 경우 현재 Directory 경로를 찾고 A.dll을 추가합니다. 주위에 어떤 생각이 있습니까?

+0

['AppDomain.AssemblyResolve'] (http://msdn.microsoft.com/pl-pl/library/system.appdomain.assemblyresolve (v = vs.110) .aspx) 처리기를 사용해 보셨습니까? –

+0

이것은 대체 기술이 아니므로 실제로 원래의 필요한 어셈블리를 얻을 수 있습니까? –

+0

내가 아는 한이 필요한 어셈블리를 알고 있으므로 Assembly.LoadFrom을 통해 제공 할 수있다. –

답변

1

솔루션을 빌드 할 때 파일이 AppDomain.CurrentDomain.BaseDirectory에 복사되지 않는다고 생각됩니다. 참조가 없으면 필요한 DLL이 올바른 위치에 복사되는지 수동으로 확인해야합니다.

위의 BasconSah 의견을 참조하십시오.

관련 문제