2016-02-29 3 views
3

Ни один из пакетов SQLite .NET не работает в FSI, даже если ссылается на модуль в проекте fs. Я пробовал System.Data.SQLite, SQLitePCL.raw и Microsoft.Data.Sqlite.SQLite не может выполнить из F # FSI

От System.Data.SQLite docs:

Если исполняемый файл, который запускает процесс полностью состоит из управляемого кода, он будет работать с родной архитектурой процессора машины, которая будет 64 на 64 в машине. Позже это вызовет сборку, содержащую любой собственный код, скомпилированный для x86 (например, сборку смешанного режима «System.Data.SQLite.dll», сборку встроенного взаимодействия «SQLite.Interop.dll» или «sqlite3.dll», родной библиотеки), чтобы не загружаться, что обычно приводит к выбросу BadImageFormatException.

ошибка брошена обычно выглядит

System.DllNotFoundException: Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
    at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(IntPtr filename, Sqlite3Handle& ppDb, Int32 flags, IntPtr vfs) 
    at Microsoft.Data.Sqlite.Interop.NativeMethods.sqlite3_open_v2(String filename, Sqlite3Handle& ppDb, Int32 flags, String vfs) 
    at Microsoft.Data.Sqlite.SqliteConnection.Open() 
    at <StartupCode$FSI_0009>[email protected]() in E:\BitSync\NonGitProjects\SQLiteSandbox\Microsoft.DataSandbox\Scripts\Script1.fsx:line 7 

Demo gist

Кто-нибудь нашел решение этой проблемы? SQLite отлично работает в компилируемых программах F # и в режиме отладки.

+1

32bit или 64-битной FSI? –

+2

Не знаю, пробовали ли вы это, или если это поможет, но не может навредить упоминанию об этом. Смотрите: [Загрузка собственных DLL-файлов в F # Interactive] (http://christoph.ruegg.name/blog/loading-native-dlls-in-fsharp-interactive.html) –

+0

@GuyCoder Именно это помогло мне заставить его работать несколько недель назад. – TeaDrivenDev

ответ

3

У artec Loading Native DLLs in F# Interactive есть правильные методы решения проблемы загрузки собственных DLLS.

В моем случае в моем случае я успешно попробовал

System.Environment.CurrentDirectory <- @"D:\Projects\SQLiteSandbox\SQLiteSandbox\bin\Debug\x86" 
Смежные вопросы