2010-06-23 6 views
2

강력한 이름의 어셈블리가 있는데, 특정 폴더 (GAC 아님)에 설치되어 있습니다. 반사경과 같이 특정 경로에서 강칭 어셈블리를로드 하시겠습니까?

이름

은 다음과 같습니다

"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4" 

하고 설치되어 경로

"c:\\QueueBall" 

내가 그것을로드 Assembly.Load 또는 Assembly.LoadFrom을 사용할 수 있으며, 어떻게 그렇다면?

강력한 이름 지정이 적용될 수 있습니다. 즉, 실제로로드중인 DLL이 예상 이름이고 동일한 이름을 가진 가짜 이름이 아닌지 확인할 수 있습니까?

+0

쯧, 쯧합니다. 자신의 폴더를 드라이브 루트에서 직접 생성하는 것은 좋은 생각이 아닙니다. –

+0

@Joel - 내가 제어 할 수있는 것, 아아. 내 DLL이 아니며 설치 프로그램이 아닙니다. – Eric

답변

7

당신은 LoadFrom을 사용할 수 이것은 또한이 코드를 실행하는 응용 프로그램 도메인에 참조 된 어셈블리를로드

var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll"); 

하는 것으로. 이 동작을 원하지 않으면 LoadFile 메서드를 사용할 수 있습니다.


UPDATE :

당신이 개편되지 않은 것을 확인하기를로드하기 전에 어셈블리 ID를 확인할 수 있습니다

AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll"); 
byte[] key = an.GetPublicKey(); 
Version version = an.Version; 
+0

감사합니다. 강력한 이름이 올바른지 확인하는 방법이 있습니까? 즉, 누군가가 동일한 파일 이름을 사용하지만 잘못된 서명으로 자신의 DLL을 교체하지 않았습니까? – Eric

+0

@ 에릭, 내 업데이트를 참조하십시오. –