2011-04-01 5 views
8

다른 제품의 DLL을 참조하는 프로젝트 작업 중입니다. 이 제품은 해마다 릴리스되며 각 버전마다 어셈블리 버전이 변경되지만 방법은 동일하게 유지됩니다. 2009 년에 프로젝트를 빌드하고 실행할 때 다른 버전에 종속되어 있기 때문에 오류가 발생합니다. 이 문제를 해결할 방법이 있습니까?어떻게하면 C# 프로젝트에서 어셈블리의 버전 번호를 무시할 수 있습니까?

답변

8

참조를 선택하고 속성 창에서 Specific Version을 false로 설정하십시오.

+1

분명히 이것은 컴파일 타임 어셈블리 참조에만 영향을줍니다. –

7

당신이 당신의 신축 어셈블리를 참조하는 프로그램의 재 구축 수행없이 조립 의 버전을 교환 한 후 런타임에 문제를 참조하는 경우, 당신은 당신의 프로그램의 응용 프로그램에 <bindingRedirect> 지시어를 사용하는 것이 좋습니다 의 .config (Web.config 또는, 당신은 웹 사이트에 대해 얘기하는 경우.)이 어셈블리의 하나의 응용 프로그램에 비해 다른을 버전을 사용하는 OK의 .NET Framework를 지시하는 데 사용됩니다

bindingRedirect 원래 컴파일되었습니다. 기본적으로 CLR은 응용 프로그램이 빌드 중에 참조하고있는 것과 동일한 버전의 DLL을보고 싶습니다. 그렇지 않은 경우 CLR은 예외를 throw합니다.

1

그것은 당신이 응용 프로그램의 루트 폴더에 넣어 그 의 app.config에서 어셈블리의 다른 .NET 버전을 매핑 할 수있다

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Waters.ACQUITY.Remote" 
          publicKeyToken="6c13fd0b3604de03" 
          culture="neutral" /> 
     <bindingRedirect oldVersion="1.40.0.0" 
         newVersion="1.60.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

이것은 당신이 언급 한 조립 솔루션은 다른을 구체적으로로 그 안에 대한 참조를 가지고있다 라이브러리 버전.

"특정 버전"이 컴파일 타임에 true로 설정되면 발생합니다. 이 문제를 피하려면 거짓이어야합니다. enter image description here

관련 문제