Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
1

System.DllNotFoundException: "Не удается загрузить DLL "SQLite.Interop.dll": Не найден указанный модуль

16.08.2020, 00:54. Показов 9741. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые знатоки! У меня была написана прога где я использовал System.Data.SQLite версии 1.0.112. И там создание и подключение к бд работает.

Сейчас хочу написать другую прогу, где sqlite так же используется. Код с подключением к бд я просто скопировал из одной программы в другую и по идее он должен бы работать. Но возникает ошибка System.DllNotFoundException: "Не удается загрузить DLL "SQLite.Interop.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)" Хотя этот файл есть в папках debug/86 и /64
Из нугета скачал System.Data.SQLite версии 1.0.113. (112 - нету)

Пробовал так как нашел на свевозможных форумах:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string baseName = "WordsTable.db3";
                SQLiteConnection.CreateFile(baseName);
                SQLiteFactory factory = (SQLiteFactory)DbProviderFactories.GetFactory("System.Data.SQLite");
                using (SQLiteConnection connection = (SQLiteConnection)factory.CreateConnection())
                {
                    connection.ConnectionString = "Data Source = WordsTable.db3";
                    connection.Open();
 
                    using (SQLiteCommand command = new SQLiteCommand(connection))
                    {
                        command.CommandText = @"CREATE TABLE [Table1] (
                    [ID] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
                    ....................
                    );";
                        command.CommandType = System.Data.CommandType.Text;
                        command.ExecuteNonQuery();
                    }
                }
                factory.Dispose();

Пробовал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string baseName = Directory.GetCurrentDirectory() + "/WordsTable.db3";
                SQLiteConnection.CreateFile( baseName);
                using (SQLiteConnection connection = new SQLiteConnection())
                {
                    connection.ConnectionString = $"Data Source = {Directory.GetCurrentDirectory()} /WordsTable.db3";
                    connection.Open();
 
                    using (SQLiteCommand command = new SQLiteCommand())
                    {
                        command.CommandText = @"CREATE TABLE [Table1] (
                    [ID] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
                    ..............................................
                    );";
                        command.CommandType = System.Data.CommandType.Text;
                        command.ExecuteNonQuery();
                    }
                }
Ошибка та же.
Помогите разобраться, пожалуйста!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2020, 00:54
Ответы с готовыми решениями:

Запуск приложения на другом ПК ("Не удается загрузить DLL "SQLite.Interop.dll": Не найден указанный модуль)
Здравствуйте! Прошу помочь в следующем вопросе. При запуске приложения на другом ПК (при обращении...

Не удаётся загрузить dll "sqlite" Не найден указанный модуль. Исключение из HRESULT: 0x8007007E
Не могу загрузить фото в базу данных с использованием sqlite. Я уже не знаю шо делать. Проект...

Не удается загрузить DLL: Не найден указанный модуль
Доброго времени суток! -подключаю LuaInterface.dll, как ссылку; -копирую luanet.dll в папку с...

"Не удается загрузить DLL Microsoft.DiaSymReader.Native.amd64.dll не найден указанный модуль"
программа Visual Studio Comunity 2017 выскакивает ошибка при записи информации отладки Не...

13
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 09:07  [ТС] 2
Создал новый солюшен на винформах и на кнопку повесил этот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string baseName = "WordsTable.db3";
                SQLiteConnection.CreateFile(baseName);
                SQLiteFactory factory = (SQLiteFactory)DbProviderFactories.GetFactory("System.Data.SQLite");
                using (SQLiteConnection connection = (SQLiteConnection)factory.CreateConnection())
                {
                    connection.ConnectionString = "Data Source = WordsTable.db3";
                    connection.Open();
 
                    using (SQLiteCommand command = new SQLiteCommand(connection))
                    {
                        command.CommandText = @"CREATE TABLE [Table1] (
                    [ID] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
                    ....................
                    );";
                        command.CommandType = System.Data.CommandType.Text;
                        command.ExecuteNonQuery();
                    }
                }
                factory.Dispose();
Все заработало.
Тогда создал новый солюшен на MVC и добавил тот же код, появилась новая ошибка
"Не удалось загрузить файл или сборку "System.Data.SQLite, Version=1.0.79.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)"

Добавлено через 15 минут
забыл добавить, ошибка вылетает на этой строке
C#
1
 SQLiteFactory factory = (SQLiteFactory)DbProviderFactories.GetFactory("System.Data.SQLite");
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 09:15 3
Как установить System.Data.SQLite?

А это не работает:
Цитата Сообщение от WersaT Посмотреть сообщение
Directory.GetCurrentDirectory()
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 09:46  [ТС] 4
Да я так и делал. Скачал из нугета System.Data.SQLite.
Попробовали из винформ проекта скопировать и заменить в своем проекте dll-файлы sqllite. Ошибка та же.
Попробовал в mvc проекте удалить все из нугета и просто сделать ссылку на dll-файл созданный в винформ-проекте.
Ошибка та же.

Добавлено через 11 минут
Почему в ошибке возникла версия Version=1.0.79.0 если я скачивал 1.0.113.1 и в свойствах файла такая же версия?
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 10:26 5
Проверьте, нет ли в PATH пути к другим версиям.

Надо скачать через NuGet и ничего вручную не копировать.

Interop лежат в каталогах x64 и x86. Нужная версия выбирается во время выполнения, в зависимости от разрядности процесса.
Вложения
Тип файла: zip ConsoleApp1.zip (5.9 Кб, 21 просмотров)
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 10:41  [ТС] 6
версию 1.0.79.0 нашел в папке \packages, похоже там все что скачено из нугета хранится. Но ссылки в проге указывают на папку System.Data.SQLite.1.0.113.1 и в packages.config тоже указаны версии 1.0.113.1

Добавлено через 41 секунду
все скачивал из нугета, вручную только ради попробовать. Все вернул как было

Добавлено через 10 минут
Interop у меня так же лежит в каталогах x64 и x86. Попробовал заменить файлы из Вашей программы - ошибка та же
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 10:42 7
Не надо заменять ничего.
Мой проект собирается? Работает?
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 10:42  [ТС] 8
да, Ваш проект собирается
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 10:53 9
Работает? Код допишите, попробуйте к базе обратиться.

Если работает, ищите разницу.
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 11:16  [ТС] 10
Сравнил, все тоже самое... не понимаю...
Причем если просто подставить такой код
C#
1
2
3
4
 using (var connection = new SQLiteConnection())
            {
 
            }
то возникает ошибка
"Не удается загрузить DLL "SQLite.Interop.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)"
Хотя эти файлы в каталогах x64 и x86 есть
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 11:26 11
Выложите минимальный свой проект, в котором можно увидеть ошибку.
0
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 11:36  [ТС] 12
https://yadi.sk/d/a2ybMHLmRi8W-Q
приложить через этот сайт не получилось, при загрузке выдал ошибку страница не найдена, по этому через яндекс диск
0
Эксперт .NET
11075 / 6992 / 1571
Регистрация: 25.05.2015
Сообщений: 21,100
Записей в блоге: 14
16.08.2020, 11:57 13
Лучший ответ Сообщение было отмечено WersaT как решение

Решение

if (File.Exists("WordsTable.db3"))
Current Directory не работает так, как вы ожидаете! См. Относительное зло.

Хотя эти файлы в каталогах x64 и x86 есть
Как раз и нету.
Вы запускаете сборку TextGenerator.WEB.dll в каталоге ...\v 4.0\TextGenerator.WEB\TextGenerator.WEB\bin\
Её зависимостью является TextGenerator.DAL.dll, которая туда также копируется.
TextGenerator.DAL.dll в свою очередь зависит от System.Data.SQLite.dll, который также копируется.
А вот interop x86 и x64 с ними не копируется. Поэтому не находится при запуске.

Добавлено через 27 секунд
Цитата Сообщение от WersaT Посмотреть сообщение
риложить через этот сайт не получилось, при загрузке выдал ошибку страница не найдена
Форум принимает только мелкие файлы.
1
6 / 4 / 3
Регистрация: 23.10.2010
Сообщений: 291
16.08.2020, 13:45  [ТС] 14
Честно говоря я думал, что все действия с бд происходят только в проекте DAL, но попробовал установить system.data.sqlite и в проект web.
Появилась такая ошибка "Не удается загрузить DLL "SQLite.Interop.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)"
Но почему-то каталоги 64 и 86 в папке bin проекта web не создаются.

Добавлено через 19 минут
аааа, понял, разобрался. Спасибо большое
0
16.08.2020, 13:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2020, 13:45
Помогаю со студенческими работами здесь

System.DllNotFoundException: "Не удается загрузить DLL
Есть код using System; using System.Text; using System.Runtime.InteropServices; using...

OpenCvSharp. Не удается загрузить DLL "opencv_core240": Не найден указанный модуль
Добавил через Nuget. Выдает такую ошибку: DllNotFoundException: Не удается загрузить DLL...

Не удается загрузить DLL "SQLite.Interop.dll"
Здравствуйте! Прошу помочь в следующем вопросе. При запуске инсталлятора возникает ошибка - Не...

Unable to load dll 'mozglue' не найден указанный модуль
юзаю geckofx (движок мозиллы) на машинах где стоит vs всенорм но при запуске на win7 64 на...

Не удается загрузить DLL "Microsoft.DiaSymReader.Native.amd64.dll": Не найден указанный модуль
Сборка начата… 1>------ Сборка начата: проект: Lesson1, Конфигурация: Debug Any CPU ------ 1>CSC...

SQLite не найден SQLite.Interop,dll
работаю на виртуальной машине windows 7 x86. Установлен Visual Studio 2013. Через NuGet установил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru