Impossible de charger le fichier ou l'assembly dans NHibernate
J'ai récemment eu quelques problèmes avec la hibernate.cfg.xml
fichier que je n'avais pas eu la ligne suivante dans le.
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
Maintenant que c'est corrigé j'obtiens l'erreur suivante.
Impossible de charger le fichier ou l'assembly 'NHibernate, Version=2.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)
Pourquoi j'ai cette erreur et comment la corriger?
source d'informationauteur GaryDevenay
Vous devez vous connecter pour publier un commentaire.
Ces fichiers doivent être dans le même répertoire que le fichier référencé, NHibernate.dll:
Antlr3.Runtime.dll
Iesi.Collections.dll
log4net.dll
Castle.Core.dll
Castle.DynamicProxy2.dll
Aussi, vous devez ajouter une référence ou une copie de celle-ci aussi:
Je suis en supposant que vous avez récemment mis à niveau NHibernate à 2.1?
Si oui, je suppose que vous avez de différents projets de référencement différentes versions de NHibernate.
Ce qui m'est arrivé et est plus difficile à traquer que vous ne le pensez.
Ce sont ces étapes que j'ai pris à le résoudre:
Qui, nous l'espérons résoudre ce problème pour vous.
Comme une future référence:
Si vos êtes en train de vivre les mêmes problèmes Randy Klingelheber souligné (problèmes de dépendance entre NHibernate et FluentNHibernate, ou toute autre fonction de bibliothèque), vous pouvez spécifier une redirection pour les assemblées qui cible l'ancienne version. Cela évite d'avoir à recompiler l'dépendante de l'assemblée.
Ce code redirige les demandes de l'ancienne version (3.0.0.3001 dans mon cas) à celui réellement utilisé (3.0.0.4000). Le publicKeyToken est inclus dans le message d'erreur.
J'ai eu ce problème aussi.
Pour moi, le problème était que FluentNHibernate prévu une autre version de NHibernate (2.1.0.4000) que j'ai été compris dans le projet (2.1.2.4000). Je suis tombé sur cette séparée de téléchargement les dernières versions de chaque bibliothèque.
Pour résoudre le problème, j'ai changé mon NHibernate référence au point à l'ancienne version de NHibernate qui est venu avec FluenNHibernate 1.0 RTM (2.1.0.4000).
Une autre solution peut être de définir explicitement votre assemblée liaisons à partir de l'app.fichier de configuration.
J'ai récemment mis à jour notre projet avec la 1.0 version RTM de FluentNHibernate, qui a exigé que la dernière NHibernate bits. Cela a conduit à le même problème que vous rencontrez.
Notre structure du projet a été quelque chose comme ceci:
(Toutes les DLL externe de résider dans le ReferenceAssemblies répertoire.)
Ma première tentative pour résoudre le problème a été en ajoutant une référence à NHibernate.ByteCode.Castle.dll à la DataAccess projet. Cela a fonctionné... mais seulement dans le développement...
Lorsque j'ai publié l'application web de notre acceptation par le client du serveur de test (qui se fait automatiquement avec l'aide de TeamCity et un script contenant un appel à aspnet_compiler.exe), la NHibernate.ByteCode.Castle.dll était nulle part pour être trouvée.
Je ne suis pas sûr pourquoi ce qui se passe, mais je soupçonne que cela a quelque chose à voir avec le fait qu'aucun code que ce soit dans notre application, fait des appels de code spécifique dll. Aussi, il y a (corrigez-moi si je me trompe) pas codé en dur de référence de NHibernate.dll pour NHibernate.ByteCode.Château, quelque part en bas de la ligne de l' (vraisemblablement non utilisés) dll est négligé.
La deuxième (et réussie) tentative était d'ajouter une référence à la dll manquante directement au projet web. Maintenant, je pouvais enlever la référence que j'ai ajouté dans la première tentative, sans aucun problème.
(Je ne suis pas particulièrement friand d'avoir une telle référence dans ce projet en particulier, mais bon!) 🙂
Dans mon cas, la "Solution Propre", suivie par une Reconstruction de la Solution", a résolu le problème.
Vous avez probablement code de référencement de deux versions différentes de la NHibernate DLL. L'NHibernate.dll que vous téléchargez avec NHibernate est probablement une version différente de celle que vous téléchargez avec, disons, le Château de ActiveRecord. Essayer de s'en tenir à la version de la NHibernate DLL qui est venu avec NHibernate.ByteCode.Château. Et assurez-vous que vous n'avez pas le NHibernate DLL (toute version) dans votre GAC (au moins jusqu'à ce que vous obtenir ce problème résolu).
J'ai eu ce problème après la mise à niveau NHibernate à 3.0 et le Printemps pour la nightly build qui a utilisé NH 3.0. Le problème était que Spring.Data.NHibernate30.dll référencé ancienne version de NHibernate.dll (v 3.0.0.2002) et j'ai eu v 3.0.0.4000.
Ma solution a été d'ouvrir le projet du Printemps.Les données.NHibernate30 source, de supprimer les références à l'ancienne version de NHibernate, ajouter une référence à la version 3.0.0.4000, de reconstruire et maintenant dans mon projet, ajouter une référence à la présente (nouvellement construit) version de Spring.Data.NHibernate30.dll.
J'ai juste eu cela m'arrive à moi-dans mon cas, c'était ma première fois d'essayer NHibernate (et NHibernate Fluent). J'avais mis en œuvre la plupart de mon application dans un .dll assemblée, référencé par un exécutable séparé de l'assemblée. L'exécutable, qui n'ont pas de références à NHibernate directement, donne-moi de l'erreur.
Je suis à l'aide de NuGet pour tirer vers le bas Couramment NHibernate, j'ai donc ajouté la fluidité de la NHibernate référence à l'exécutable assemblées. N'est pas super propre, mais il obtient les dépendances dans le .dossier bin et résout l'erreur. (c'est marrant qu'il n'a pas (semble?) se produire avec d'autres bibliothèques, comme NLog)
J'ai été confronté au même problème. J'ai effacé "Fichiers Internet Temporaires", et cette question s'en alla.
Vous devriez référence des assemblées dépendantes (je suppose que c'est "NHibernate.ByteCode.Château") et de définir leur "copie locale" attribut de vrai.
NHibernate a quelques autres assemblées autres que
nhibernate.dll
. Avez-vous les ai tous (à partir de la même version)?Vous pourriez avoir des projets différents dans votre solution. Ces projets peuvent être de référencement différentes versions de NHibernate.dll. Vérifie les versions de tous les projets et de reconstruire le projet
Il ressemble à la NHibernate dll n'est pas copié dans le répertoire bin de votre application. Assurez-vous qu'il est référencé et existe dans le répertoire bin.