2011-07-04 4 views
1

MyUserType.dll 어셈블리에 클래스 Address을 만들었습니다. 콘솔 응용 프로그램에서로드하려고합니다. 아래 코드를 시도했지만 실패했습니다 :typeof (UserType) .AssemblyQualifiedName을 사용하여 어셈블리를로드 할 수 없습니다.

//cfg.AddAssembly(typeof(Address).AssemblyQualifiedName); 

다른로드 어셈블리 메서드 중 하나를 사용하려고하면 성공합니다.

cfg.AddAssembly(Assembly.GetAssembly(typeof(Address))); 
cfg.AddAssembly("MyUserType"); 

실패한 MSG는 다음과 같습니다

메시지 = "파일이나 어셈블리 'Ordering.Data.Address, Ordering.Data를로드 할 수 없습니다, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = null "또는 해당 종속성 중 하나입니다. 제공된 어셈블리 이름 또는 코드베이스가 잘못되었습니다 (HRESULT 예외 : 0x80131047)."

왜?

+0

첫 번째 인수는 문자열을 인수로 사용하고 두 번째 인수는 어셈블리로 인수를 사용합니다. AddAssembly()의 오버로드가 어떻게 될지 짐작하기 어렵습니다. –

답변

1

클래스 Ordering.Data.Address에는 라이브러리와 동일한 디렉토리에없는 어셈블리에 대한 참조가 있습니다 (MyUserType.dll). 참조 된 모든 어셈블리가 System32 폴더, GAC 또는 라이브러리와 동일한 디렉터리에 있는지 확인하십시오.

0

Type.AssemblyQualifiedName은 포함하는 어셈블리의 FullName으로 연결된 Type의 FullName을 반환하므로 형식의 정규화 된 이름을 반환합니다. 당신은 Assembly.Load 또는 유사한 것으로 그것을 전달하는 것처럼 보입니다. 따라서 유효한 어셈블리 이름이 아니기 때문에 분명히 실패합니다.

AssemblyQualifiedName을 사용하려면 올바르게 구문 분석 할 정적 Type.GetType(string) 메서드와 같은 것으로 전달해야합니다.

관련 문제