2009-08-05 2 views
1

우리가 작성한 다른 dll 버전 4.3.2.1을 참조하는 콘솔 응용 프로그램을 빌드했습니다.C# 콘솔 응용 프로그램에 대한 참조 버전 지정

그것은 잘 작동하고 그 일을했다.

그런 다음 4.3.2.1을 보려면 dll 버전 4.3.2.2가 빌드되고 콘솔 응용 프로그램이 종료되기 시작합니다.

4.3.2.1 이상을 사용하도록 콘솔 응용 프로그램에 알리는 방법이 있습니까? 4.3.2.1에있는 메소드도 4.3.2.2에 있으며 dll의 모든 후속 버전에 포함됩니다.

답변

4

사용의 app.config의 <assemblyBinding> 요소 :

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Foo.dll" 
           publicKeyToken="1234567890abcdef" 
           culture="neutral" /> 
      <bindingRedirect oldVersion="4.3.2.1" 
          newVersion="4.3.2.2"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

자세한 내용은도 "Redirecting Assembly Versions".

이것은 물론 응용 프로그램을 다시 컴파일하지 않으려는 경우입니다. 다시 컴파일 할 필요가 없다면 "특정 버전 사용"을 false로 설정하면됩니다.

+0

감사합니다. 시도해 보겠습니다. 유틸리티를 다시 컴파일 할 필요가 없기 때문에이 메서드는 완벽 할 것입니다. –

3

참조를 다른 DLL로 선택하면 속성 창을 끌어 올립니다. "특정 버전"속성이 false로 설정되어 있는지 확인하십시오.

+0

응용 프로그램을 다시 작성할 수 있으면 좋지만 그렇지 않은 경우 app.config를 사용할 수 있습니다. 나는 "특정 버전 사용"이 컴파일 타임에 참조되는 버전 만 변경한다고 생각합니다. –

0

dll 이름이 변경된 경우. 예. foo-4.3.2.1.dll, foo-4.3.2.2.dll은 런타임시 어셈블리를로드하는 유일한 방법입니다.

어셈블리 이름이 변경되지 않으면 참조 된 어셈블리에 '특정 버전'이 설정되어있을 가능성이 높습니다. 사용 중지하면 문제가 해결됩니다.