Я использую приложение C # для подключения к базе данных SQLite. Приложение использует библиотеку System.Data.Sqlite, версия 108. В Visual Studio 2017 моей конфигурацией решения является Отладка, а моей платформой решений - Любой ЦП. Всякий раз, когда я собираю и запускаю приложение, я получаю следующее исключение времени выполнения:
Исключение не обрабатывается, и приложение завершается.
Конечно, в моем каталоге bin \ Debug есть файл SQLite.Interop.dll. (Если бы не было, исключение было бы другим.) В частности, есть два, каждый в своих подкаталогах с именами x64 и x86. Я предполагаю, что файл в каталоге x86 используется, поскольку для Solution Platform установлено значение Any CPU. Версия сборки SQLite.Interop.dll совпадает с версией System.Data.SQLite.dll и составляет 1.0.108.0.
Когда я использую следующую команду для опроса сборок:
dumpbin /exports SQLite.Interop.dll
Я нашел следующую строку в выводе для сборки x64 версии:
175 AE 00040750 sqlite3_open_interop
но в выводе для версии x86 у меня нет. Вместо этого я нахожу эту строку:
175 26 00037F10 _sqlite3_open_interop@20
что близко, но не совпадает. Таким образом, действительно нет такого метода, как sqlite3_open_interop, предоставляемый сборкой.
Я пробовал очевидное решение по изменению платформы решений на x64, но это изменение приводит к другому исключению (BadImageFormatException), с которым я не очень хочу бороться.
Я попытался удалить ссылку на System.Data.SQLite и использовать Nuget, чтобы добавить самую последнюю версию 1.0.111.0, затем очистить и перестроить решение, но все безрезультатно. Повторяется та же проблема.
Может кто-нибудь предложить решение этой проблемы? Я полагаю, что SQLite широко используется, поэтому я должен думать, что есть способ справиться с ним.
* Edit1: я попробовал этот проект на своем домашнем компьютере и обнаружил одинаковую разницу между двумя файлами SQLite.Interop.dll. Версия x64 имела sqlite3_open_interop, а версия x86 - _sqlite3_open_interop @ 20. Однако проблема не возникла там . Так что, видимо, это искаженное название «проблема» - красная сельдь. Я все еще очень заинтересован в решении этой проблемы и был бы признателен за помощь тому, кто работает над System.Data.Sqlite!