2010-11-18 2 views
4

nhibernate와 함께 log4net의 새 버전을 사용하고 싶습니다. log4net 버전은 svn 소스에서 직접 컴파일되므로 publicKeyToken이 변경된 새로운 키로 서명해야했습니다. 또한 버전을 1.2.11.0으로 설정했습니다. 문제는 nhibernate가 이전 1.2.10.0 버전의 log4net을 참조한다는 것입니다. 타사 lib가 이전 버전에 의존 할 때 새 publicKeyToken과 함께 다른 버전의 어셈블리 사용

나는의 app.config에서이 부분 어셈블리 바인딩 리디렉션을 구성하려 :

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="log4net" 
         publicKeyToken="1b44e1d426115821"/> 
    <bindingRedirect oldVersion="1.2.10.0" 
        newVersion="1.2.11.0"/> 
    </dependentAssembly> 
</assemblyBinding> 

그러나 어떤 영향을 미칠 것 같지 않습니다. publicKeyToken이 일치하지 않기 때문이라고 가정합니다.

이렇게하는 다른 방법이 있습니까? a. log4net 1.2.10을 사용하고 관심있는 svn 코드베이스의 추가 및 수정 사항과 함께 log4net 확장 프로젝트를 만드시겠습니까? 또는 b. 내 자신의 log4net 빌드를 사용하여 내 버전의 nhibernate 빌드 또는 c. log4net 팀이 올바른 publicKeyToken을 사용하여 log4net의 새 버전을 출시하도록하십시오.

나는 c를 선호합니다. 그리고 솔직히 나는 그들이 새로운 빌드 버전을 출시하지 않은 이유를 이해할 수 없다. 거기에는 많은 수정과 새로운 기능이 svn 소스에있다.

+1

예, 사소한 수정을 위해 새 키를 사용하는 저자는 매우 실망 스러울 수 있습니다. – ladenedge

답변

2

당신이 원하는 것은 정확히 어떤 서명이 방지하기위한 것입니다.

옵션 c)에는 새로운 Hibernate 빌드가 필요하다는 것에주의하십시오.

나는 b)가 최선이라고 생각합니다.

+1

새 log4net 빌드가 동일한 publicKeyToken을 가지므로 어셈블리 바인딩 리디렉션이 작동해야하므로 c) 새 nhibernate 빌드가 필요하지 않다고 생각하지 않습니다. 내 빌드의 문제점은 다른 키로 서명했다는 것입니다. – Trygve

+0

예, 잘못 읽었습니다. 이전 키를 사용하여 업데이트하려고합니다. –

+0

헨크, 당신이 말했습니다. "네가 원하는 것은 서명하는 것이 무엇을 막을 지 정확히 알고있다." 이전 버전에 대해 컴파일 된 코드에 동적으로 링크 된 최신 버전의 어셈블리를 사용할 수없는 이유는 무엇입니까? 보안 위험은 어떤가? –

관련 문제