2010-02-27 10 views
3

J'ai de la difficulté à faire en sorte qu'Hibernate et Windsor travaillent ensemble. Mes détails de configuration sont les suivantes

Conflits entre l'assemblée de NHibernate et celle de Windsor

J'ai deux projets
-DomainModel
-MVCApp

J'ai téléchargé NHibernate 2.1.2 et 2.1.1 Windsor
J'ai ajouté les références suivantes à DomainModel du dossier required_Bins du téléchargement de NHibernate -
Antlr3, Iese, log4net et NHibernate 2.1.2.4
J'ai également ajouté des références dans DomainModel aux fichiers pour Lazy_loading comprenant

Castle.Core - 1.1.0.0
Castle.DynamicProxy2 - 2.1.0.0
NHibernate.ByteCode.Castle - 2.1.2.4

Le MVCApp a les références suivantes:

Castle.Core - 1.2.0.6623
Château .Microkernel - 2.1.0.6655
Castle.Windsor - 2.1.0.6655
Castle.DynamicProxy2 - 2.2.0.6628

Lorsque vous exécutez l'application que je reçois l'erreur:

Impossible de charger le fichier ou l'assembly « Castle.DynamicProxy2, Version = 2.1.0.0,
Appel de l'assembly: NHibernat e.ByteCode.Castle, Version = 2.1.2.4000

Le dossier MVC bin a la version Castle.DynamicProxy2 - 2.2.0.6628, d'où l'erreur après la demande de l'ancienne version.

Comment puis-je faire en sorte que cela fonctionne? Qu'est-ce que je manque ou inclu incorrectement? S'il vous plaît aider .. Merci.

Répondre

3

D'où avez-vous obtenu votre NHibernate.ByteCode.Castle?

Je crois qu'ActiveRecord 2.1 en aura construit un pour la dernière version stable de DynamicProxy2.

Sinon, faites ce que suggère Lachlan Roche.

+0

A partir du téléchargement de NHibernate-2.1.2.GA-bin sourceforge.net .. merci pour l'option ActiveRecord. – Matt

+0

Accrochage fournisseur NHibernate bytecode de AR est votre meilleure option pour l'instant, puisque l'équipe NHibernate ne fournit pas le téléchargement mis à jour pour DynamicProxy 2.2 –

2

Vous pouvez obtenir la source de NHibernate.ByteCode.Castle et générer une version qui utilise la version 2.2.0.6628 de Castle.DynamicProxy2. La branche 2.1.x est here dans svn.

Il est également possible qu'une redirection de liaison d'assembly puisse fonctionner. Cela pourrait échouer en raison de la différence API entre 2.1 et 2.2 de Castle.DynamicProxy2.
Vous devez également mettre à jour les références d'assemblage dans votre projet MVCApp.

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Castle.DynamicProxy2" publicKeyToken="407dd0808d44fbdc"/> 
      <bindingRedirect oldVersion="2.1.0.0" newVersion="2.2.0.6628"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
+0

Salut Lachlan .. merci pour l'aide ... encore. Je vais essayer. – Matt

0

J'ai eu ce problème, vous devez changer votre « cadre cible » dans l'onglet d'application de vos propriétés du projet de « .NET Framework 4 Client Profile » à » .NET Framework 4"

0

j'ai eu la même problème ... et je l'ai résolu par changing the NHibernate Bytecode provider. Lorsque j'ai commencé à utiliser NHibernate, j'ai choisi le fournisseur Castle Bytecode pour aucune raison particulière. Comme je ne me soucie pas du fournisseur de Bytecode que j'utilise réellement, je l'ai juste changé (dans mon cas à NHibernate.ByteCode.LinFu).
NHibernate n'a plus besoin de références à Castle, et je peux utiliser n'importe quelle version de Windsor.