Исключение «Не удалось загрузить файл или сборку» Microsoft.Practices.EnterpriseLibrary.Validation - PullRequest
7 голосов
/ 04 января 2010

В настоящее время я получаю следующее исключение при попытке использовать блок приложения проверки библиотеки предприятия:

Произошла ошибка при создании обработчика раздела конфигурации для проверки: не удалось загрузить файл или сборку 'Microsoft.Practices.EnterpriseLibrary.Validation, версия = 4.1.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) (C: \ Documents and Settings \ Мои документы \ Visual Studio 2008 \ Проекты \ Тестеры \ TestProject \ web.config строка 12)

Я знаю, что пытается сказать мне исключение, но я не могу понять, как это исправить. Я только когда-либо устанавливал одну версию Enterprise Library, и это она (4.1.0.0), поэтому я не понимаю, как она могла найти неправильную версию, поэтому я представляю, что это проблема зависимости. Я включил библиотеки Common, Validation и ObjectBuilder2 из Enterprise Library 4.1 в качестве ссылок в проекте, так что я не уверен, что еще мне не хватает. Документация определенно указывает на то, что это все, что мне нужно.

Есть ли способ отследить, в чем проблема зависимости?

Если это помогает, я пытаюсь использовать Средство конфигурирования Enterprise Library для создания набора правил блока приложения проверки для проверки данных в объекте Entity Framework. Я использую ASP.NET MVC в Visual Studio 2008.

Спасибо за любую помощь / направление, которое вы можете предоставить,

Chris

1 Ответ

5 голосов
/ 04 января 2010

Включите ведение журнала Fusion и посмотрите, какая сборка связана во время выполнения.

У Хансельмана недавно было сообщение, которое должно помочь в регистрации и проверке результатов.

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

Еще одно важное различие, которое следует сделать, заключается в том, что ссылки, добавляемые в проект, являются ссылками во время компиляции и не влияют на способ, которым код связан во время выполнения, кроме как для указания строгого имени, если использовалась сборка со строгим именем. Чтобы выяснить, что происходит во время выполнения, вам нужно просмотреть журналы привязки. В журнале должны быть показаны все попытки, которые среда выполнения делает при поиске сборки. Если сборка не находится в каталоге bin вместе с вашим возможным, она, скорее всего, ищет в GAC и находит версию, которую он не ожидает.

Обратите внимание, что компилятор НЕ использует GAC при обращении к сборкам. Поэтому, скорее всего, у вас есть другая версия, используемая в качестве ссылки в проекте, чем вы установили в GAC.

Кроме того, очень легко узнать, какую версию вы установили в GAC, посмотрев в C: \ Windows \ assembly с помощью Windows Explorer. Версия, указанная в вашем сообщении об ошибке, будет версией, на которую ссылались во время компиляции. Если эти версии не совпадают, это может быть вашей проблемой, если предположить, что Fusion действительно смотрит в GAC (что будет видно по журналу Fusion).

...