2010-11-18 5 views
4

Je souhaite utiliser une nouvelle version de log4net avec nhibernate. La version log4net est compilée par moi-même à partir de la source svn, donc j'ai dû la signer avec une nouvelle clé, ce qui signifie que publicKeyToken est changé. J'ai également mis la version à 1.2.11.0. Le problème est que nhibernate fait référence à l'ancienne version 1.2.10.0 de log4net.Utilisez une autre version d'assembly avec new publicKeyToken lorsque la librairie 3rd party dépend de l'ancienne version

J'ai essayé de configurer l'ensemble redirection de liaison avec cette partie dans 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> 

Cependant, il ne semble pas avoir d'effet. Je suppose que c'est parce que le publicKeyToken ne correspond pas.

Y a-t-il un autre moyen de le faire ou de le faire I: a. Utilisez log4net 1.2.10 et créez un projet d'extensions log4net avec les ajouts et les correctifs de la base de code svn qui m'intéresse? OU b. Construis ma propre version de nhibernate en utilisant ma propre version log4net OU c. Faire l'équipe de log4net libérer une nouvelle version de log4net avec le bon publicKeyToken

Je préférerais c. et honnêtement je ne peux pas comprendre pourquoi ils n'ont pas sorti une nouvelle version de build depuis des lustres, il y a beaucoup de corrections et de nouvelles fonctionnalités dans la source svn.

+1

Oui, les auteurs utilisant de nouvelles clés pour des révisions mineures peuvent être très frustrants. – ladenedge

Répondre

2

Ce que vous voulez, c'est exactement ce que la signature vise à prévenir. Notez que votre option c) nécessite également une nouvelle version d'Hibernate.

Je pense que b) est votre meilleur coup.

+1

Je ne pense pas que c) ne nécessiterait pas une nouvelle construction nhibernate car la nouvelle construction de log4net aurait le même publicKeyToken donc la redirection de liaison d'assembly devrait fonctionner. Le problème avec ma propre construction est comme je l'ai dit que c'est signé avec une clé différente. – Trygve

+0

Oui, j'ai mal lu. Vous voulez qu'ils mettent à jour en utilisant les anciennes clés. –

+0

Henk, vous avez dit: "Ce que vous voulez, c'est exactement ce que la signature vise à empêcher." Pourquoi ne puis-je pas utiliser une version plus récente d'un assembly lié dynamiquement au code compilé avec l'ancienne version? Comment est-ce un risque de sécurité? –

Questions connexes