Я написал приложение, которое использует sqlite, и отлично работает на самых систем. Он написан на C#, и единственная некадровая сборка - sqlite, которая включена в System.Data.SQLite.dll.На некоторых компьютерах приложение не может загрузить файл sqlite dll
Я развертываю его одинаково на всех компьютерах (скопируйте файл exe, файл базы данных и файл System.Data.SQLite). Он отлично работает для всех моих ПК и большинства компьютеров, которые я пробовал.
Но тогда я получил сообщения, что для некоторых людей это бросает следующее исключение:
Не удалось загрузить файл или сборку « System.Data.SQLite, Version = 1.0.65.0, Culture = нейтральный, PublicKeyToken = db937bc2d44ff139 'или - одна из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом .
Теперь я убедился, что файл dll находится в той же папке, что и файл exe приложения. Это одна и та же DLL с той же версией, что и в вышеприведенном сообщении об исключении.
Я был очень смущен этим, поэтому создал новую виртуальную машину, установил на нее Windows 7 Professional и просто скопировал вложенные файлы, и это сработало. Поэтому, если он работает на свежих окнах, я не могу себе представить, что другие ПК могут отсутствовать ...
Примечание: Две из тех машин, где проект выбрасывает исключение, также работают с Windows 7 proffesional.
Я был бы очень признателен за любую помощь по этому вопросу, потому что я свежий из идей ...
Спасибо! Полностью упущенный, что sqlite.NET имеет два разных файла dll - для x32 и x64. Я сменил dll на машины, на которых он не работал, и теперь он работает. Я никогда не думал, чтобы спросить их о 32 против 64 бит ... –
Есть ли способ проверить во время выполнения, если платформа 32/64 бит и действовать соответственно в этом случае? – Ben
@Ben: Боюсь, я не знаю. Вам нужно будет динамически загружать нужную DLL-библиотеку sqlite во время выполнения, но я не знаю, как это сделать в .net. – RichieHindle