7

Je reçois actuellement l'exception suivante tout en essayant d'utiliser le bloc d'application Enterprise Library Validation:« Impossible de charger le fichier ou l'assembly « Microsoft.Practices.EnterpriseLibrary.Validation » exception

Une erreur est survenue la création de la section de configuration gestionnaire pour la validation: Impossible de charger le fichier ou l'assembly 'Microsoft.Practices.EnterpriseLibrary.Validation, Version = 4.1.0.0, Culture = Neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition de manifeste de l'assembly localisé ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040) (C: \ Documents and Settings \ Mes documents \ Visual Studio 2008 \ Projects \ Testers \ TestProject \ web.config ligne 12)

Je sais ce que l'exception essaie de me dire, mais je ne peux pas comprendre comment le réparer. J'ai seulement installé une version de la bibliothèque d'entreprise, et c'est elle (4.1.0.0), donc je ne vois pas comment elle pourrait trouver la mauvaise version, donc j'imagine que c'est un problème de dépendance. J'ai inclus les DLL "Common", "Validation" et "ObjectBuilder2" de l'Enterprise Library 4.1 comme références dans le projet, donc je ne suis pas sûr de ce que je manque d'autre. La documentation semble indiquer que c'est tout ce dont j'ai besoin.

Existe-t-il un moyen de déterminer quel est le problème de dépendance? Si cela vous aide, j'essaie d'utiliser l'outil de configuration de bibliothèque d'entreprise pour créer un ensemble de règles de blocage d'application de validation pour la validation des données dans une entité Entity Framework. J'utilise ASP.NET MVC dans Visual Studio 2008.

Merci pour toute assistance/direction dans laquelle vous pouvez fournir,

Chris

Répondre

5

activer la journalisation Fusion et voir ce que l'assemblage est en cours lié à l'exécution.

Hanselman avait un poste récemment qui devrait être utile pour permettre la journalisation et l'examen de la sortie.

http://www.hanselman.com/blog/CommentView.aspx?guid=3654c8f3-c5c3-4dee-a01f-c9a8da3ef2fa

Une autre distinction importante à faire est que les références qui sont ajoutés au projet sont des références à la compilation et n'affectent pas la façon dont le code est lié à l'exécution autre que de spécifier un nom fort si un assemblage fortement nommé a été utilisé. Afin de savoir ce qui se passe à l'exécution, vous devez regarder les journaux de liaison. Le journal devrait vous montrer toutes les tentatives faites par l'exécution pour localiser l'assemblage. Si l'assembly n'est pas dans le répertoire bin avec votre exectuable, il est très probable qu'il cherche dans le GAC et trouve une version à laquelle il ne s'attend pas.

Notez que le compilateur n'utilise pas le GAC lors du référencement des assemblages. Donc, très probablement, vous avez une version différente utilisée comme référence dans le projet que vous avez installé dans le GAC.

En outre, il est très facile de trouver la version que vous avez installée dans le GAC en regardant dans C: \ Windows \ assembly en utilisant l'Explorateur Windows. La version spécifiée dans votre message d'erreur sera la version référencée lors de la compilation. Si ces versions ne correspondent pas, cela pourrait être votre problème, en supposant que Fusion regarde bien dans le GAC (ce qui sera évident en regardant dans le journal Fusion).

+0

Merci pour les pointeurs. Je me suis finalement rendu compte qu'en raison de la façon dont je faisais des références, il tirait sur la version par défaut de la DLL au lieu de la plus récente. Je pensais bêtement que je devais construire la DLL moi-même au lieu d'utiliser le binaire pré-construit dans le paquet, alors évidemment le jeton ne correspondait pas à celui que je mettais en place. J'ai trié l'installation avec Enterprise Library de sorte qu'il utilisait les DLL construites par Microsoft et tout était heureux. Je vais chercher à utiliser la fusion cependant, il semble que cela m'aurait aidé à suivre ce problème plus rapidement. Merci! – Chris

Questions connexes