Да, сэр: готов к работе с .NET 4 - Свободный NHibernate - NUnit
Используя информацию из приведенных выше постов, мне удалось заставить ее работать в Visual Studio 2010
и в моей библиотеке NUnit для тестирования, скомпилированной для любого процессора в режиме отладки.
Сначала я продолжал получать то же исключение, что и некоторые из вас:
Не удалось создать драйвер из NHibernate.Driver.SQLite20Driver, NHibernate, Версия = 3.1.0.4000, Культура = нейтральный, PublicKeyToken = aa95f207798dfdb4.
Я использовал NUGet для загрузки версии SQLite 1.0.76.0 для .NET версии 4.0.30319. Пост Devios выше и его сводная ссылка привели меня к тестированию AssemblyBinding в моем файле App.config, сообщив VS 2010 об использовании правильной версии System.Data.SQLite для NHibernate. Вот что я положил в свой App.Config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="System.Data.SQLite"
fullName="System.Data.SQLite, Version=1.0.76.0,
Culture=neutral,
PublicKeyToken=db937bc2d44ff139"/>
</assemblyBinding>
</runtime>
Как я узнал, какие данные поместить в App.config?
Ранее я также установил статически связанную библиотеку версии SQLite .NET 4 с веб-сайта SQLite в разделе их загрузки. Это установило библиотеку SQLite на мой компьютер и добавило ее в глобальный кэш сборок - в свою очередь, предоставив мне информацию, необходимую для редактирования App.config с помощью командной строки Visual Studio 2010:
C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC> gacutil -l
System.Data.SQLite Утилита глобального кэширования сборок Microsoft (R) .NET.
Версия 4.0.30319.1 Авторские права (c) Microsoft Corporation. Все права
зарезервирован.
Глобальный кэш сборок содержит следующие сборки:
System.Data.SQLite, версия = 1.0.76.0, культура = нейтральная,
PublicKeyToken = db937bc2d44ff139, процессор архитектуры = AMD64
Количество предметов = 1
Обычно я бы использовал .NET Reflector из RedGate для извлечения информации о dll моего ранее добавленного NUget файла System.Data.SQLite, но gacutil -l System.Data.SQLite
в порядке, если вы уже установили SQLite для вашей системы, правильная версия, которая есть.
Ранее я также получил исключение сборки смешанного режима:
Не удалось загрузить тип System.Data.SQLite.SQLiteConnection,
System.Data.SQLite. System.IO.FileLoadException: смешанный режим сборки
построен на версии v2.0.50727 среды выполнения и не может быть
загружается во время выполнения 4.0 без дополнительной настройки
информация.
Тогда, если я захочу использовать версию SQLIte для .NET 2.0, я добавлю в свой файл App.config следующее:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Но теперь, когда у меня установлена версия SQLite для .NET 4, мне не нужно запускать старую версию .NET 2 и в унаследованном режиме - чтобы избежать возможных конфликтов в дальнейшем при использовании внутрипроцессной параллельной активации хоста - Google MSDN:
Когда более новая версия .NET Framework CLR загрузила сборку
который был построен против предыдущей версии CLR, совместимость
могут возникнуть проблемы, и приложение может перестать работать. это
может произойти для любой управляемой сборки, как в полных приложениях, так и
в плагинах (где управляемые сборки запускаются в контексте
хост-приложение). Единственный способ гарантировать, что более новая версия
.NET Framework не влияет на существующие приложения, чтобы иметь
все существующие управляемые приложения работают в своей первоначальной цели
скомпилированная версия .NET Framework.
Спасибо всем вам, ребята, за то, что вы указали мне правильное направление!
Надеюсь, что после этого другим будет легче исправить эту проблему.