Проблема при попытке настроить корпоративную библиотеку 5.0 (блок доступа к данным)

Я столкнулся с некоторыми проблемами при попытке запустить DAAB из Enterprise library 5.0. Я следовал за шагами согласно учебнику, но получаю ошибки...

1) Скачать / установить корпоративную библиотеку

2) Добавить ссылки на нужные мне блоки (общие / данные)

3) Импорт

Imports Microsoft.Practices.EnterpriseLibrary.Common
Imports Microsoft.Practices.EnterpriseLibrary.Data

4) Через программное обеспечение конфигурации библиотеки предприятия. Я открываю web.config с моего сайта. Затем я нажимаю "Блоки", затем "Добавить настройки данных"... введите свои данные и сохраните / закройте

5) Затем я (думая, что установка завершена) пытаюсь получить экземпляр базы данных через

 Dim db As Database = DatabaseFactory.CreateDatabase() 

6) Я компилирую и получаю следующую ошибку:

Не удалось загрузить файл или сборку "Microsoft.Practices.EnterpriseLibrary.Data, версия =5.0.414.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35" или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) (C:\site\web.config строка 4)

Строка 4 моего web.config была сгенерирована утилитой config и выглядит так:

<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />

Я пропустил обязательный шаг? Я сделал шаги в неправильном порядке? Я сделал ошибку?

Большое спасибо за помощь.

6 ответов

Решение

Ответ:

Я случайно ссылался на сборки из папки с кодом src. Это означает, что публичные токены будут иметь значение = ноль. Я снова сослался на сборки в C:\Program Files\Microsoft Enterprise Library 5.0\Bin, и проблема теперь решена.

Я уже видел, что вы получили ответ; тем не менее, я хотел бы отметить, что когда вы открываете инструмент Config из VS, у вас есть возможность сообщить инструменту config, на какие сборки вы хотите сослаться:

  1. В VS2010: откройте окно редактора свойств и выберите в обозревателе решений файл решения.
  2. Вы увидите параметр "Сборка Enterprise Library 5" с вариантами использования подписанных версий (Microsoft Signed) или неподписанных (EntLibV5Src)

Когда вы запускаете инструмент конфигурации; он будет ссылаться на сборки в файле конфигурации в соответствии с вашим выбором.

В дополнение к тому, что ответил @Nicolas, вы можете решить эту проблему, удалив публичный токен в app.config, где бы он ни использовался с dll Enterprise Library 5.0

Корпоративная библиотека имеет 2 загрузки...

  • Enterprise Library 5.0 - Исходный код.msi
  • Библиотека предприятия 5.0.msi

Только второй имеет подписанные двоичные файлы... что необходимо для устранения ошибки "определение манифеста не соответствует ссылке на сборку"

(и к вашему сведению, второй также включает исходный код, если вы решите его установить)

Генерировать

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />                      
        <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />   
        <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />      

Вероятно, вам нужно изменить целевую платформу в свойстве проекта с ".NET Framework 4 Client Profile" на ".NET Framework 4".

При первом создании консольного проекта VS 2010 по умолчанию создает "Профиль клиента NET Framework 4". EL 5 скомпилирован с ".NET Framework 4", и ваш проект испытывает трудности с разрешением EL dll.

Другие вопросы по тегам