2010-02-24 7 views
1

나는 C# .net exe를 사용하여 타사 DLL에 대한 참조를 추가합니다..NET에서 어셈블리 방향 재 지정

이 타사 DLL은 GAC에 등록 된 강력한 이름의 어셈블리입니다.

타사 DLL (버전 7.0)을 사용하여 프로그램을 컴파일합니다.

내 C# .net exe 프로그램을 GAC에 등록 된 타사 DLL (7.0 이상 버전)에 등록하려고합니다.

만약 다시 내가 그것을 successfuly 실행하는 대상 컴퓨터에 존재하는 DLL 버전 내 C# 프로젝트를 컴파일 할 때 .. "등록되지 않은 어셈블리 버전 7.0 유형을 찾을 수 없습니다"

주를 알리는 몇 가지 기계 기계에서 무작위로 실패 : a. 프로젝트가 원래 어셈블리 버전 7.0.4.82 &이 11.0.367.0에서 실행되도록 컴파일되었다고 가정 해 보겠습니다. b. Test.Framework, Test.Core는 참조 된 어셈블리입니다. 해결하기 위해 촬영

단계 : 다음 app.config 파일에

시도 조립 재 방향 기법. 나에게 몇 가지 단계를 제시하십시오

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" > 

    <dependentAssembly> 

    <assemblyIdentity 

      name="Test.Framework" 

      publicKeyToken="ebf6b2ff4d0a08aa" culture ="neutral"/> 

    <bindingRedirect oldVersion="7.0.4.82" 

         newVersion="11.0.367.0" /> 

    <publisherPolicy apply="no" /> 

    </dependentAssembly> 

    <dependentAssembly> 

    <assemblyIdentity 

      name="Test.Core" 

      publicKeyToken="ebf6b2ff4d0a08aa" culture ="neutral"/> 

    <bindingRedirect oldVersion="7.0.4.82" 

         newVersion="11.0.367.0" /> 

    <publisherPolicy apply="no" /> 

    </dependentAssembly>  


</assemblyBinding> 

는이 문제를 해결합니다.

미리 감사드립니다.

+0

받고있는 전체 예외 스택 추적을 게시하십시오. –

답변

4

내 제안을 다음 퓨전 로깅

  1. 켭니다 (here 참조)
  2. GAC에 설치된 어셈블리에 의존하지 마십시오. GAC에서 VS 프로젝트로 참조하는 대신 소스 코드 저장소에 별도의 디렉토리에 추가 한 다음 거기에서 참조하십시오. 이렇게하면 이 앱에서 사용중인 타사 어셈블리 버전을 제어 할 수 있습니다. 우리가 어떻게했는지보기 here.
0

왜 응용 프로그램과 함께 필요한 버전을 배포하지 않으시겠습니까? Create은 GAC에 필요한 버전을 등록하는 설치 (배포)입니다. DLL 공급 업체는 설치에 포함시킬 수있는 병합 모듈을 제공 할 수 있습니다.

또는 Igor에서 제안한대로 로컬 복사본을 사용하십시오.