2015-05-22 4 views
5

Мы изменили с sqlite-net на sqlite.net выпуск PCL. Наш проект отлично работал со старым - с выпуском PCL, теперь нам нужно явно объявить нашу платформу, используя.sqlite.net PCL выбрасывает TypeInitalizationException

var conn = new SQLiteConnection(new SQLitePlatformWin32(), Path.Combine(folderPath, dbName)); 

Но теперь, когда я называю эту линию, мы получаем

первого шанса исключение в типа 'System.TypeInitializationException' произошло в SQLite.Net.Platform.Win32.dll

Дополнительная информация: Инициализатор типа для «SQLite.Net.Platform.Win32.SQLiteApiWin32Internal» сделал исключение.

Внутренний Исключение говорит нам

{ "Не удалось загрузить нативную библиотеку SQLite"}

StackTrace:

на SQLite.Net.Platform.Win32. SQLiteApiWin32Internal.sqlite3_open_v2 (Byte [] filename, IntPtr & db, Int32 flags, IntPtr zvfs)

на SQLite.Net.Platform.Win32.SQLiteApiWin32.Open (Byte [] имя файла, IDbHandle & дБ, Int32 флаги, IntPtr zvfs)

в SQLite.Net.SQLiteConnection..ctor (ISQLitePlatform sqlitePlatform, Струнный DataBasePath , SQLiteOpenFlags openFlags, булевы storeDateTimeAsTicks, IBlobSerializer сериализатору, IDictionary 2 tableMappings, IDictionary 2 extraTypeMappings, IContractResolver распознаватель)

на SQLite.Net.SQLiteConnection..ctor (ISQLitePlatform sqlitePlatform, струнного DatabasePath, булевы storeDateTimeAsTicks, IBlobSerializer сериализатором, IDictionary 2 tableMappings, IDictionary 2 extraTypeMappings, IContractResolver резольвер)

Однако sqlite3.dll в папке с приложениями и работает с некруглой версией. Я играл с компиляцией для x86 и x64 и загружал последнюю версию sqlite3.dll для Win32, но все без успеха. Что нам не хватает?

ответ

17

У меня была такая же проблема в проекте испытаний. Решил его, добавив пакет http://www.nuget.org/packages/System.Data.SQLite.Core для SQLitePlatformWin32.

Хотя нет в списке, как зависимость в реальной версии, это было в предыдущей упаковки NuGet платформы (http://www.nuget.org/packages/SQLite.Net.Platform.Win32/)

Дополнительно: в случае использования SQLitePlatformGeneric копии sqlite3.dll должны быть помещены в выходной каталог.

+1

Это было решение - это были файлы dll interop, которые отсутствовали, и после добавления основного пакета в мой проект он также добавил эти файлы. Интересно, что мне не приходилось добавлять файлы в качестве прямой зависимости в моем проекте класса lib (где у меня были файлы pcl sqlite), но в моем проекте gui, который зависит от класса lib, чтобы заставить его работать. – Marwie

+0

Убедитесь, что вы выбрали правильный пакет .Core (x86/x64), а не пакет MSIL .Core. –

+0

В чем разница между SQLitePlatformWin32 и SQLitePlatformGeneric? – batmaci

Смежные вопросы