2010-10-21 4 views
0

J'utilise Microsoft Visual Studio 2010. Je commence à utiliser FluentNHibernate 1.1. Après configuration.BuildSessionFactory() execute, j'ai une exception.Impossible de charger le fichier ou l'assemblage 'Castle.DynamicProxy2, Version = 2.1.0.0, Culture = neutral, PublicKeyToken = 407dd0808d44fbdc'

Message "Could not load file or assembly 'Castle.DynamicProxy2, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies.

Castle.DynamicProxy2 présente dans les références du projet, la version est correcte. Aussi cet assemblage présent dans le chemin de construction. Je ne peux pas résoudre ce problème ...

p.s. J'essaie d'obtenir la dernière version de FluentNHibernate, la compiler et l'exécuter avec l'assemblage dans mon projet. J'ai la même erreur.

+0

D'où avez-vous téléchargé NHibernate? Assurez-vous d'utiliser la version incluse avec FNH. – mxmissile

+0

première fois que j'ai téléchargé FluentNHibernate de http://fluentnhibernate.org/, après de http://github.com/jagregory/fluent-nhibernate – webus

+0

Cette erreur se manifeste uniquement en mode de débogage. lorsque l'application s'exécute en dehors du studio, il n'y a pas d'erreurs – webus

Répondre

0

Il se peut que ce soit parce que vous ciblez Framework 4.0 et que l'assembly Castle est compilé pour 2.0.

Vous pouvez essayer d'ajouter ceci à votre app.config, dans l'élément <configuration />, pour permettre la version mixte lors de l'exécution:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
</startup> 
0

Vous dites que la référence à Castle.DynamicProxy2 existe dans votre projet, et est la bonne version. Avez-vous vérifié son chemin de fichier, si c'est correct?

Il existe un petit problème avec MSVS qui concerne les chemins de référence. Une fois que vous faites référence à un assembly et que votre projet est compilé, une copie de cet assembly est créée dans votre répertoire de sortie. Souvent, son chemin de référence est modifié automatiquement pour pointer vers ce répertoire de sortie. Ensuite, si vous nettoyez ou quelque chose, votre fichier n'existe plus où il est prévu et provoque ce type de message d'erreur.

Pour résoudre ce problème, vous devez supprimer votre référence de l'assembly problématique et l'ajouter de nouveau comme référence à votre projet.

Une autre approche simple consiste à définir vos chemins de référence par projet à partir des propriétés de votre projet. Malheureusement, vous devrez les définir par projet, autant de fois que le projet compte votre solution. De plus, tous les programmeurs de votre équipe le feront également, car ces paramètres sont conservés sur la machine locale et ne sont pas déployés dans les paramètres du projet comme les paramètres, par exemple.

Questions connexes