2014-12-31 3 views
2

내가 아래에 일부 기본 코드를 작성 : 프로젝트는 내가 모든 .NET Framework 버전 <의를 System.Web.dll의 입력 경로를 준)합니다 (loadForm를 들어 .NET 프레임 워크 4.02.0 프레임 워크 경로를 제공하더라도 LoadFile (경로)이 항상 4.0 프레임 워크를 가리키는 이유는 무엇입니까?

를 대상으로

static void Main(string[] args) 
{ 
    Assembly asm = Assembly.LoadFrom(
     @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.dll"); 
    Console.WriteLine(asm.FullName); 
} 

orginal 한 출력 :

0,123,516

4. 항상 내가 4.0 .NET 프레임 워크

코드의 출력 결과입니다 자사를 System.Web.dll의 전체 경로를 제공

("를 System.Web.dll을, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = 31bf3856ad364e35")

예상 출력 :

내가 필요 system.web.dll (버전 2.0.0.0)의 정확한 경로;

알려주십시오.이 현상을 달성하기 위해 어떤 변화가있을 수 있습니다.

답변

1

here; 기본적으로 :

  • 를 GAC 바람직하다
  • System.Web 당신이 4.x의 버전
에게있는 GAC
  • 에서 버전을,
  • 때문에 GAC에 존재

    .CodeBase을 보면 GAC가 언급되어 있습니다.

    원하는 작업에 따라 ReflectionOnlyLoadFrom이 적용될 수 있습니다.

    Assembly asm = Assembly.ReflectionOnlyLoadFrom(
        @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.dll"); 
    Console.WriteLine(asm.FullName); 
    

    쇼 :

    System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a