2013-06-10 7 views
0

최근까지 Assembly.LoadFrom을 호출하여 어셈블리를로드하는 중이었습니다. 하지만 이제 임시 appDomain에로드해야합니다. 임시 도메인에 어셈블리를로드하려고 할 때 FileLoadException이 계속 발생합니다. appDomainSetup 매개 변수를 CreateDomain 메서드에 전달하려고했지만 성공하지 못했습니다.appDomain에서 어셈블리를로드 할 수 없습니다.

여기 내 코드입니다.

var tempDomain = AppDomain.CreateDomain("TempDomain"); 
Assembly sampleAssembly = tempDomain.Load(pathToDll); 

내 어셈블리는 내 응용 프로그램의 기본 디렉토리

답변

0

AppDomain.Load로드 "TempDomain"하나에서 현재 실행중인 응용 프로그램 도메인에서 조립 및하지의 하위 디렉토리에 있습니다. MSDN 문서에 언급 된대로 :

이 메서드는 현재 응용 프로그램 도메인에 어셈블리를로드하는 데 사용해야합니다. 이 방법은 static Assembly.Load 메서드를 호출 할 수없는 상호 운용성 호출자의 편의를 위해 제공됩니다. 어셈블리를 다른 응용 프로그램 도메인에로드하려면 CreateInstanceAndUnwrap와 같은 메서드를 사용합니다.

현재 실행중인 AppDomain (대개 기본 AppDomain)이 하위 디렉토리에서 어셈블리를 찾을 수 없기 때문에 호출이 실패합니다. 당신은 부하 상황에서 어셈블리를로드하려고 할 때 이러한 어셈블리는 다음 위치 중 하나에 위치하고 있는지 확인해야합니다

  1. 응용 프로그램 도메인의 기본 디렉토리
  2. 기본 디렉토리의 하위 디렉토리가

    How the Runtime Locates Assemblies : 다음과 같은 기사를 확인하실 수 있습니다 더 많은 정보를 위해 응용 프로그램 도메인의 개인 빈 경로에

  3. 를 GAC

을 지정

Best Practices for Assembly Loading

Back to Basics: Using Fusion Log Viewer to Debug Obscure Loader Errors