2009-12-30 2 views
0

두 컴퓨터의 GAC에 "Microsoft.Web.Services2.dll"V2.0.3.0이 있습니다.Assembly.Load 이상한 동작

내가 그들 모두에이 줄을 실행하고 있습니다 :

Assembly.Load("Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"); 

이 (내가 기대하는 것처럼)이 실패 하나의 시스템에서

(버전 note 참고 2.0.0.0하지 2.0.3.0입니다) . 또 다른 그것은 작동하고로드 된 dll은 2.0.3.0입니다. 사실이 기계에서는 3보다 낮은 모든 버전이 작동합니다 (또한 3을로드합니다).

어떻게 설명 할 수 있습니까?

답변

0

bin 폴더에 Microsoft.Web.Services2.dll이 있을지도 모릅니다.

var assembly = Assembly.Load("XXX"); 
Console.WriteLine(assembly.Location); 
+0

아니, 그것은 –

+1

는 그래서는'Location' 속성은 한 번 어셈블리를로드하기 위해 동일 않습니다이 없다? –

+0

버전에 관계없이 (3을 제공하면 C : \ Windows \ assembly \ GAC \ Microsoft.Web.Services2 \ 2.0.3.0__31bf3856ad364e35 \ Microsoft.Web.Services2.dll이됩니다. –

0

이는 "특정 버전"플래그를 로딩과 관련이있을 수 있습니다 어셈블리 location을 확인합니다. Visual Studio의 References 폴더에서 어셈블리 속성을 확인하면 특정 버전의 어셈블리에 링크할지 여부를 지정하는 "특정 버전"속성이 표시됩니다 (기본값은 false 임). 기본적으로 어셈블리의 특정 버전 또는 최신 버전에 연결되며 여기서 일어나는 일을 추측합니다.

따라서 특정 버전을로드 할 것인지 아니면 특정 버전이 없는지 최신 버전으로 되돌릴 것인지를 지정하는 Load 메서드 자체에 몇 가지 옵션이있을 수 있습니다.

+0

어셈블리가에서 참조되지 않습니다. 모두 - GAC에서로드합니다. 이것은 이상한 것입니다 ... –