Проблема при попытке настроить корпоративную библиотеку 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, на какие сборки вы хотите сослаться:
- В VS2010: откройте окно редактора свойств и выберите в обозревателе решений файл решения.
- Вы увидите параметр "Сборка 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.