Файл SQLite.Interop.dll считается разновидностью DLL-файла. DLL-файлы, такие как SQLite.Interop.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например MpSigStub.exe. Данные файлы были созданы для того, чтобы различные программы (например, Sharp World Clock) имели общий доступ к файлу SQLite.Interop.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.
К сожалению, то, что делает файлы DLL настолько удобными и эффективными, также делает их крайне уязвимыми к различного рода проблемам. Если что-то происходит с общим файлом DLL, то он либо пропадает, либо каким-то образом повреждается, вследствие чего может возникать сообщение об ошибке выполнения. Термин «выполнение» говорит сам за себя; имеется в виду, что данные ошибки возникают в момент, когда происходит попытка загрузки файла SQLite.Interop.dll — либо при запуске приложения Sharp World Clock, либо, в некоторых случаях, во время его работы. К числу наиболее распространенных ошибок SQLite.Interop.dll относятся:
- Нарушение прав доступа по адресу — SQLite.Interop.dll.
- Не удается найти SQLite.Interop.dll.
- Не удается найти C:Program Files (x86)Sharp World Clock 8SQLite.Interop.dll.
- Не удается зарегистрировать SQLite.Interop.dll.
- Не удается запустить Sharp World Clock. Отсутствует требуемый компонент: SQLite.Interop.dll. Повторите установку Sharp World Clock.
- Не удалось загрузить SQLite.Interop.dll.
- Не удалось запустить приложение, потому что не найден SQLite.Interop.dll.
- Файл SQLite.Interop.dll отсутствует или поврежден.
- Не удалось запустить это приложение, потому что не найден SQLite.Interop.dll. Попробуйте переустановить программу, чтобы устранить эту проблему.
Файл SQLite.Interop.dll может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с Sharp World Clock) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла SQLite.Interop.dll может быть вызвано отключением питания при загрузке Sharp World Clock, сбоем системы при загрузке SQLite.Interop.dll, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
dotnet add package SQLite.Interop.dll --version 1.0.103
NuGetInstall-Package SQLite.Interop.dll -Version 1.0.103
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module’s version of Install-Package.
<PackageReference Include="SQLite.Interop.dll" Version="1.0.103" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SQLite.Interop.dll --version 1.0.103
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SQLite.Interop.dll, 1.0.103"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install SQLite.Interop.dll as a Cake Addin
#addin nuget:?package=SQLite.Interop.dll&version=1.0.103
// Install SQLite.Interop.dll as a Cake Tool
#tool nuget:?package=SQLite.Interop.dll&version=1.0.103
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Как устранить сообщения об ошибках «Отсутствует / Не найден SQLite.Interop.dll»
Как правило, проблемы с SQLite.Interop.dll возникают в результате повреждения, а также случайного или намеренного удаления файла DLL из места расположения других файлов PCmover Ultimate. Как правило, самый лучший и простой способ устранения ошибок, связанных с файлами DLL, является замена файлов. Если ошибка SQLite.Interop.dll возникла в результате его удаления по причине заражения вредоносным ПО, мы рекомендуем запустить сканирование реестра, чтобы очистить все недействительные ссылки на пути к файлам, созданные вредоносной программой.
Формат Dynamic Link Library, известный как собственный формат Системные файлы, чаще всего имеет расширение DLL. Наша коллекция файлов SQLite.Interop.dll для %%os%% представлена в списках ниже. В текущем каталоге файлов могут отсутствовать редкие или очень старые версии SQLite.Interop.dll, но вы можете запросить необходимую версию, нажав на кнопку Request (Запрос) рядом с необходимой версией файла. В некоторых случаях, чтобы получить необходимую версию файла, вам может потребоваться связаться непосредственно с LapLink Inc..
Как правило, при размещении файла SQLite.Interop.dll в надлежащем каталоге, проблемы, связанные с данным файлом, больше не возникают, однако следует выполнить проверку, чтобы убедиться в том, что проблему удалось устранить. Затем вы можете повторно открыть PCmover Ultimate, чтобы проверить выводится ли сообщение об ошибке.
SQLite.Interop.dll Описание файла | |
---|---|
Формат файла: | DLL |
Функция: | file transfer |
Program: | PCmover Ultimate |
Версия: | c. 2016 |
Создано: | LapLink Inc. |
Имя файла: | SQLite.Interop.dll
|
Размер: | 1163216 |
SHA-1: | b640d1301dbda7871edd66458f6247533bf7dca4 |
MD5: | a08ab74d07d900e00ee9b5a9a6699827 |
CRC32: | d6fe8fac |
Продукт Solvusoft
Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в SQLite.Interop.dll
Windows
11/10/8/7/Vista/XP
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
DLL
SQLite.Interop.dll
Идентификатор статьи: 224971
SQLite.Interop.dll
Имя | Идентификатор файла (контрольная сумма MD5) | Размер (в байтах) | Загрузить | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ SQLite.Interop.dll | a08ab74d07d900e00ee9b5a9a6699827 | 1.11 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | dc2475822967b1b543d7a8f7851a0391 | 827.95 KB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | a08ab74d07d900e00ee9b5a9a6699827 | 1.11 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | dc2475822967b1b543d7a8f7851a0391 | 827.95 KB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | a08ab74d07d900e00ee9b5a9a6699827 | 1.11 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | dc2475822967b1b543d7a8f7851a0391 | 827.95 KB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | a08ab74d07d900e00ee9b5a9a6699827 | 1.11 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | dc2475822967b1b543d7a8f7851a0391 | 827.95 KB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | a08ab74d07d900e00ee9b5a9a6699827 | 1.11 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | dc2475822967b1b543d7a8f7851a0391 | 827.95 KB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 9d79d568d4cf48ede810e88962ebe83d | 0.98 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 4e5af30909eb7a217b09c34394b0dcd9 | 1.28 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 6240b4ca5b4e6289ce1376edaee270dc | 1.28 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 56035479be24bd6b3e5e72c87463e418 | 0.98 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 5bc5ba119197eb5cbf61778f08f87c38 | 1.18 MB | ||||||||||||||||
|
||||||||||||||||||
+ SQLite.Interop.dll | 5bc5ba119197eb5cbf61778f08f87c38 | 1.18 MB | ||||||||||||||||
|
Ошибки SQLite.Interop.dll
Общие проблемы SQLite.Interop.dll, возникающие с PCmover Ultimate:
- «Отсутствует файл SQLite.Interop.dll.»
- «Файл SQLite.Interop.dll отсутствует.»
- «SQLite.Interop.dll нарушение прав доступа.»
- «Файл SQLite.Interop.dll не удалось зарегистрировать.»
- «Файл C:WindowsSystem32\SQLite.Interop.dll не найден.»
- «Не удалось запустить PCmover Ultimate. Отсутствует необходимый компонент: SQLite.Interop.dll. Пожалуйста, установите PCmover Ultimate заново.»
- «Не удалось запустить PCmover Ultimate, так как SQLite.Interop.dll не найден. Повторная установка PCmover Ultimate может исправить это. «
Обычно ошибки SQLite.Interop.dll с PCmover Ultimate возникают во время запуска или завершения работы, в то время как приложения, связанные с SQLite.Interop.dll, выполняются, или редко во время последовательности обновления ОС. Выделение при возникновении ошибок SQLite.Interop.dll имеет первостепенное значение для поиска причины проблем PCmover Ultimate и сообщения о них LapLink Inc. за помощью.
Создатели SQLite.Interop.dll Трудности
Отсутствующие или поврежденные файлы SQLite.Interop.dll являются распространенными источниками ошибок SQLite.Interop.dll. Внешние файлы, такие как SQLite.Interop.dll, создают проблемы высокой вероятности с PCmover Ultimate.
Проблемы с PCmover Ultimate из-за нерегулярного завершения работы ОС, заражения вирусами или других проблем, связанных с SQLite.Interop.dll, приводят к повреждению. Когда файл SQLite.Interop.dll поврежден, он не может быть загружен должным образом и представит сообщение об ошибке.
В других случаях ошибки файла SQLite.Interop.dll могут быть связаны с проблемами в реестре Windows. Недопустимые ссылки препятствуют правильной регистрации SQLite.Interop.dll, создавая проблемы с PCmover Ultimate. Перемещение SQLite.Interop.dll, отсутствующие файлы SQLite.Interop.dll или неправильная и оставшаяся ссылка на файл из неправильной установки/удаления PCmover Ultimate приводят к их нарушению.
В частности, проблемы SQLite.Interop.dll возникают с:
- Поврежденная или недопустимая запись реестра SQLite.Interop.dll.
- Вредоносные программы заражены и повреждены SQLite.Interop.dll.
- Не удалось (или связанное с ним) оборудование LapLink Inc., повредив SQLite.Interop.dll.
- Версия файла SQLite.Interop.dll перезаписана установкой другого программного обеспечения.
- SQLite.Interop.dll злонамеренно или ошибочно удален другой программой (кроме PCmover Ultimate).
- SQLite.Interop.dll злонамеренно или ошибочно удален другой программой (кроме PCmover Ultimate).
hamin 876 / 555 / 291 Регистрация: 21.11.2012 Сообщений: 1,551 |
||||
1 |
||||
01.11.2014, 16:16. Показов 15984. Ответов 8 Метки нет (Все метки)
работаю на виртуальной машине windows 7 x86. Установлен Visual Studio 2013. Через NuGet установил для своего проекта System.Data.SQLite(x86,x64). в ХАМL дизайнере выдает мне ошибку: при этом проект компилируется и обращение к базе данных работает. при создании проекта — в папке debug или release, создаются папки x86 и x64, в которых находится этот злосчастный SQLite.Interop.dll. Все остальные dllки, необходимые для sqlite так же копируются в локальную папку. в юзерконтроле ничего особенного не происходит.. прсто коннект к бд и присваивание ItemSource:
облазил весь интернет в поисках причины, испробовал несколько вариантов решения ситуации, но они не помогли.. надеюсь, что здесь мне помогут! Миниатюры
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
01.11.2014, 16:16 |
Ответы с готовыми решениями: Не удается добавить ссылку на SQLite.interop.dll Sqlite SQLite SQLite 8 |
311 / 271 / 118 Регистрация: 05.06.2013 Сообщений: 868 |
|
03.11.2014, 10:29 |
2 |
Ловил ту же ошибку когда использовал либу System.Data.SQLite Решил проблему кардинально – перешел на другую либу, на Finisar.SQLite. Даже код менять не пришлось, синтаксис такой же, просто вместо System.Data.SQLite поставил Finisar.SQLite. В папку Debug закинул файлы SQLite.dll, SQLite.NET.dll и на всякий случай SQLite3.dll. Ну и ссылки на старые библиотеки удалил, и добавил ссылку на эту. Таким образом проблема была решена
0 |
876 / 555 / 291 Регистрация: 21.11.2012 Сообщений: 1,551 |
|
03.11.2014, 21:18 [ТС] |
3 |
попробую, спасибо
0 |
36 / 25 / 12 Регистрация: 08.04.2013 Сообщений: 269 |
|
28.02.2015, 16:38 |
4 |
Хоть тема и старая, но вставлю 5 копеек, так как только что сам столкнулся с такой же проблемой. Использую Devart.SQLite.
0 |
0 / 0 / 0 Регистрация: 06.10.2018 Сообщений: 4 |
|
23.10.2018, 19:36 |
5 |
Приветствую, Коллеги, Несмотря на то, что тема достаточно старая, она вываливается в поиске по строке «SQLite.Interop.dll» на первых страницах поисковика. Получил аналогичную ошибку в VS2017 при попытке использовать дизайнер (несмотря на то, что SQLite был подключен к проекту через NuGet). Как выяснилось, для использования дизайнера необходимо, чтобы сборка SQLite была в GAC (global assembly cache) или по-русски в глобальном кэше сборок. Не рекомендую использовать для установки в GAC майкрософтовскую утилиту gacutil, т.к. достаточно сложно найти для неё отдельно версию библиотеки SQLite.Interop.dll, которую данная утилита сможет установить, поэтому для решения проблемы нужно установить требуемую версию библиотек с сайта разработчика (обращайте внимание на описание, там должно присутствовать: «This is the only setup package that is capable of installing the design-time components for Visual Studio ХХХХ» где ХХХХ номер версии, специально для нас сделали жирным шрифтом ) можно скачать сразу в качестве инсталлятора. После установки всё запустилось без проблем. Всем удачи!
0 |
1 / 1 / 0 Регистрация: 13.06.2013 Сообщений: 33 |
|
20.09.2020, 18:17 |
6 |
тема стара) но решил проблему просто копированием библиотеки SQLite.Interop.dll в паку откуда запускается программа
0 |
49 / 147 / 33 Регистрация: 29.06.2019 Сообщений: 1,428 |
|
01.01.2021, 08:52 |
7 |
в папке debug или release, создаются папки x86 и x64, в которых находится этот злосчастный SQLite.Interop.dll. Все остальные dllки, необходимые для sqlite так же копируются в локальную папку так они же уже откомпилированы… причём если dll и сам проект компилировались разными компиляторами — то может быть error при попытке их увидеть друг друга
решил проблему просто копированием библиотеки SQLite.Interop.dll в паку откуда запускается программа вам, наверно, повезло больше… и динамическое подключение проходит норм
0 |
1 / 1 / 0 Регистрация: 19.01.2013 Сообщений: 50 |
|
05.09.2021, 21:01 |
8 |
Так что же, друзья? «Тема старая». А как решается эта проблема? Вот столкнулся с ней…
0 |
1074 / 807 / 143 Регистрация: 25.07.2015 Сообщений: 1,782 |
|
06.09.2021, 08:34 |
9 |
А как решается эта проблема? Вот столкнулся с ней… О проблеме по-конкретнее хотелось бы: какая среда, какой FW, какая разрядность приложения…и т.д.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.09.2021, 08:34 |
Помогаю со студенческими работами здесь SQLite LIKE 3 AC00015433.jpg SQLite QT + SQLite замедляется Из Access в SQlite Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 9 |
Вопрос:
Периодически я получаю следующее исключение:
Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Я использую 1.0.82.0. версии, устанавливая его с помощью nuget в VS2010, OS Win7 64.
Как только появляется исключение, оно появляется постоянно – в отладочном и запущенном приложении внутри или вне VS.
Единственный способ остановить это – выход из системы и вход в систему. Исключение не выбрасывается, и dll загружается.
Он может работать в течение нескольких дней, но тогда он может снова сломаться.
Кто-нибудь видел что-то подобное и есть ли решение для этого?
Ответ №1
Я знаю, что опаздываю на вечеринку, но у меня была эта проблема сразу после того, как сегодня я снял последнюю версию x86/x64 (версия 1.0.88.0). Мой локальный IIS в VS2012 по умолчанию 32bit, и нет простого способа переключения на x64. Мой сервер работает на 64-разрядной версии.
В любом случае я установил пакет NuGet в проект DLL, и я получил эту ошибку. Что я должен был сделать, чтобы заставить его работать, мне пришлось установить его на основной сайт. Даже если он вообще не затрагивает классы SQLite.
Мое предположение заключается в том, что SQLite использует сборку ввода для определения загружаемой версии Interop.
Ответ №2
У меня была эта проблема, потому что используемая dll была Sqlite в качестве зависимости (настроена в NuGet только с базовым пакетом Sqlite). Проект компилирует и копирует все dll файлы Sqlite, за исключением “SQLite.Interop.dll” (обе папки x86 и x64).
Решение было очень простым: просто добавьте пакет Sqlite.Core в качестве зависимости (с NuGet) к проекту, который вы создаете/выполняете, и dll-ы будут скопированы.
Ответ №3
У меня была такая же проблема при использовании SQLite в проекте WPF, целью платформы которого было Any CPU
. Я исправил его, выполнив следующие шаги:
- Откройте конструктор проекта в Visual Studio. Подробности о том, как это сделать, можно найти здесь.
- Перейдите на вкладку “Сборка”.
- Отключите параметр
prefer 32-bit
.
В качестве альтернативы вы можете просто установить целевую платформу для платформы x86
или x64
. Я думаю, эта проблема вызвана библиотекой System.Data.SQLite
, использующей целевую платформу, чтобы получить местоположение файла SQLite.Interop.dll.
UPDATE:
Если проектор не может быть достигнут, просто откройте файл проекта (*.csproj
) из текстового редактора и добавьте значение <Prefer32Bit>false</Prefer32Bit>
в тег <PropertyGroup>...</PropertyGroup>
.
Пример кода
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>[Set by Visual Studio]</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>[Set by Visual Studio]</RootNamespace>
<AssemblyName>[Set by Visual Studio]</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>[Set by Visual Studio]</FileAlignment>
<!--Add the line below to your project file. Leave everything else untouched-->
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
Ответ №4
Вот как я исправил его в своем проекте.
Он работал, и когда коллега представил свои изменения, я получил сообщение “Невозможно загрузить исключение SQLite.Interop.dll DLL”.
Развернув файл проекта .csproj, это было в версии NON-WORKING:
<ItemGroup>
<Content Include="x64SQLite.Interop.dll" />
<Content Include="x86SQLite.Interop.dll" />
</ItemGroup>
И это была версия WORKING:
<ItemGroup>
<Content Include="x64SQLite.Interop.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="x86SQLite.Interop.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
Вернувшись назад, я не получил исключения. Файлы DLL были сброшены в соответствующие папки Debugx64 (etc).
Ответ №5
Когда вы перейдете в это состояние, попробуйте выполнить команду Rebuild-All. Если это исправляет проблему, у вас может быть такая же проблема.
Некоторые фон (мое понимание):
-
SQLite имеет 1 управляемую сборку (System.Data.SQLite.dll) и несколько
платформенные узлы (SQLite.Interop.dll). При установке
SQLite с Nuget, Nuget добавит специфические для платформы сборки в ваш проект
(в нескольких папках:x86,x64) и настраивает эти
dll для “Копировать всегда”. -
При загрузке управляемая сборка будет искать платформу
специфических сборок внутри папок x86 иx64. Ты можешь видеть
подробнее об этом здесь. Исключением является
сборку, пытающуюся найти соответствующий (SQLite.Interop.dll) внутри
эти папки (и сбои).
Мой сценарий:
У меня есть 2 проекта в моем решении; приложение WPF и библиотеку классов. Приложение WPF ссылается на библиотеку классов, а библиотека классов ссылается на SQLite (устанавливается через Nuget).
Проблема для меня заключалась в том, что когда я изменяю только приложение WPF, VS пытается выполнить частичную перестройку (понимая, что зависимая dll не изменилась). Где-то в этом процессе VS очищает содержимое папок x86 иx64 (сбрасывает SQLite.Interop.dll). Когда я делаю полное Rebuild-All, VS копирует папки и их содержимое правильно.
Мое решение:
Чтобы исправить это, в итоге я добавил процесс Post-Build с помощью xcopy, чтобы принудительно скопировать папки x86 иx64 из библиотеки классов в мой проект проекта binWPF.
В качестве альтернативы вы можете делать более интересные вещи с помощью каталогов конфигурации/вывода сборки.
Ответ №6
У меня была такая же проблема с Visual Studio Express 2013. Я пробовал несколько решений, упомянутых здесь и в других местах, безрезультатно. Я надеюсь, что это исправление поможет другим.
Я исправил его с помощью атрибута DeploymentItem
моего тестового класса, который тестирует службу на основе SQLite.
Пример:
[TestClass]
[DeploymentItem(@"x86SQLite.Interop.dll", "x86")] // this is the key
public class LocalStoreServiceTests
{
[TestMethod]
public void SomeTestThatWasFailing_DueToThisVeryIssue()
{
// ... test code here
}
}
Это приводит к необходимости скопировать SQLite.Interop.dll
в каталог x86
в соответствующей папке “TestResults”.
Все зеленые. Все хорошо.
Ответ №7
Обновление NuGet с Tools -> Extension and updates
и переустановка SQLite.Core с помощью команды PM> Update-Package -reinstall System.Data.SQLite.Core
исправлена для меня.
Ответ №8
Таким образом, после добавления NuGet развертывание не копирует Interops. Вы можете добавить это в свой файл csproj, и это должно исправить это поведение:
<PropertyGroup>
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
<CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
<CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
</PropertyGroup>
Если вы посмотрите в исходном коде NuGet для SQLite, вы увидите, что именно они делают. Это позволило мне развернуть работу с ASP.Net Core.
Ответ №9
У меня была аналогичная проблема в решении нескольких проектов. SQLite.Interop.dll был необходим для одного из плагинов, распространяемых вместе с программным обеспечением с помощью ClickOnce.
Что касается отладки в visual studio, все работало нормально, но в развернутой версии отсутствовали папки x86/и x64/, содержащие эту DLL.
Решение о том, чтобы оно работало после развертывания с использованием ClickOnce, заключалось в том, чтобы создать в проекте запуска (также опубликованном) эти две вложенные папки, скопировать в них библиотеки DLL и установить их как Content Copy Always.
Таким образом, средство публикации ClickOnce автоматически включает эти файлы и папки в манифест и развертывает с ними программное обеспечение.
Ответ №10
Здесь действительно много ответов, но моя простая и понятная, без участия GAC.
Проблема заключалась в том, что исполняемому файлу нужна копия права SQLite.Interop.dll
(x86 или x64) для доступа к нашей базе данных.
В большинстве архитектур есть слои, и в моем случае на уровне данных имеется требуемая DLL для SQLite Connection.
Итак, я просто поставил post build script в свое решение Data Layer Solution, и все сработало нормально.
TL; DR;
- Задайте все проекты вашего решения
x86
илиx64
в настройках сборки. -
Добавьте следующий проект
Post-Build-Script
в проект с помощьюSQLite nuget Package
:xcopy "$(TargetDir)x64" "$(SolutionDir)binDebug" /y
Конечно, вам нужно изменить сборки script для Release Build
и x86
.
СТЛ; ДР;
Поместите ваш SQLite.Interop.dll
рядом с файлом *.exe
.
Ответ №11
Установленная по умолчанию версия SQLite от NuGet для многоадресной архитектуры (x86, x64) демонстрирует описанное вами поведение. Если вы хотите загрузить правильную версию для реальной архитектуры, которую среда выполнения .NET выбрала для запуска вашего приложения на вашем компьютере, вы можете дать загрузчику DLL подсказку о том, где найти нужную библиотеку следующим образом:
Добавьте объявление для вызова функции kernel32.dll в SetDLLDirectory() перед вашей программой. Main():
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
static extern bool SetDllDirectory(string lpPathName);
Затем используйте свой собственный метод для определения правильного подкаталога, чтобы найти версию, специфичную для архитектуры SQLite.Interop.dll. Я использую следующий код:
[STAThread]
static void Main()
{
int wsize = IntPtr.Size;
string libdir = (wsize == 4)?"x86":"x64";
string appPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
SetDllDirectory(System.IO.Path.Combine(appPath, libdir));
Ответ №12
даже если это старый пост, я хотел бы поделиться решением, которое я нашел здесь:
http://system.data.sqlite.org/index.html/info/54e52d4c6f
Если вы не хотите читать всю проблему, решение должно скопировать файл “msvcr100.dll” (который можно найти в каталоге WindowsSystem32) по тому же пути, что и SQLite.Interop.dll.
Я бы посоветовал прочитать эту проблему, чтобы понять, почему и включить файл в вашу настройку, но для его установки, только если возникла ошибка, я сделал его дополнительным компонентом, который можно выбрать в настройках.
НТН,
Formentz
Ответ №13
Вы также можете получить эту ошибку, если пытаетесь запустить 32-разрядную dll в 64-битном проекте.
Я получил это, когда я разместил тот же файл (SQLite.Interop.dll в 32-разрядной версии) в папке x86 и x64.
Ответ №14
Если вы загрузите правильный двоичный файл для SQLite
, затем скопируйте SQLite.Interop.dll
в папку “Отпуск” или “Отладка” в соответствии с вашим вариантом сборки проекта.
Ответ №15
Я начал использовать Costura.Fody для сборки пакетов (.net) и вставлять и предварительно загружать собственные DLL. Это также помогает позже, с распространением, поскольку вы можете отправить один файл.
-
Установите Костуру Фоди из Нугета.
-
В проекте С# создайте папку с именем costrua32. Там добавьте любые родные dll, которые вы загружаете С#.
-
Как только вы добавили их в эту папку. Нажмите на окно свойств и измените действие сборки на “Встроенный ресурс”
-
Наконец, вам нужно изменить XML файл FodyWeavers.xml следующим образом. Здесь я сначала определяю загрузку sql dll. (обратите внимание, что вы отбрасываете .dll)
Weavers Costura PreloadOrder SQLite.Interop tbb_debug tbb /PreloadOrder> /Costura /Weavers
Преимущество этого заключается в том, что вам не нужно писать какие-либо события предварительной или пост-сборки, а конечный продукт полностью инкапсулирован в один более крупный файл.
Ответ №16
Я не знаю, почему это еще не было включено, но я должен был провести исследование и найти это для себя, поэтому, надеюсь, кто-то найдет этот ответ и спасет проблему. Это было для приложения WPF. Он отлично работал на моем блоке Dev, но не работал на компьютере, где я его копировал, и получил ошибку Unable to load DLL 'SQLite.Interop.dll'
. Я портировал все связанные с ним каталоги и файлы непосредственно из папки “Отладка” на этот другой компьютер, когда получил ту же ошибку, что и OP, когда я ее запускал. Моя папка “bin” , в которой были мои DLL, была скопирована в “Debugbin”, и все они были включены вместе с моими файлами приложений, когда я копировал их на другой компьютер, используя этот путь, поэтому он не пропускал никаких файлов.
Что я видел в других ответах, которые не применялись:
- Я не использовал пакет NuGet или вам нужно создавать папки x86 или x64, которые, кажется, создают пакет NuGet. Мои DLL (System.Data.SQLite и SQLite.Interop.dll вместе с System.Data.SQLite.config) находятся в папке “bin” в моем проекте и скопированы вручную (создайте папку “bin” в Solution Explorer в VS, вставьте DLL в эту папку в Проводнике Windows, используйте “Добавить > Существующий элемент”, чтобы вносить файлы в папку/проект VS). Затем я ссылаюсь на них как на ссылочные сборки в моем проекте, используя это местоположение ( “Ссылки” > “Добавить ссылку” и перейдите к одному, ополаскивать, повторять для остальных). Это гарантирует, что мой проект точно знает, где они находятся.
- Мне не нужно ссылаться на любой DLL файл SQLite в моем app.config или даже на мой файл MyProject.csproj.
- Мне даже не нужно было указывать конкретный процессор! Моя сборка проекта для “Any CPU”, хотя я имею только смешанные или 64-разрядные библиотеки DLL и буду работать только в Windows 7+, которые являются 64-разрядными операционными системами. (только для x86-единственных/32-разрядных DLL)
- Я уже указывал их как “Content” и “copy if newer” для этих DLL, когда я испытал ошибку OP.
Я нашел это, от https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q20:
(11) Почему я пытаюсь запустить приложение DllNotFoundException (для sqlite3.dll или SQLite.Interop.dll)?
Либо названная библиотека динамических ссылок (DLL) не может быть расположена, либо она не может быть загружена из-за отсутствия зависимостей. Убедитесь, что указанная динамическая библиотека ссылок находится в каталоге приложения или в каталоге по системе PATH и повторите попытку. Кроме того, убедитесь, что необходимая распространяемая среда исполнения Visual С++ установлена , если вы не используете динамическую библиотеку ссылок, которая была статически связана с ней.
Акцент на эту выделенную часть внутри абзаца. Целевой компьютер был свежим и не загружал программ, кроме .NET 4.0. Как только я установил С++, он смог выполнить команды SQLite. Это должно было быть одним из первых часто задаваемых вопросов и частью предпосылок, но он был похоронен в # 11. Мой компьютер разработки уже загрузил его, потому что он пришел с Visual Studio, так что почему он работал, там.
Скачать:
Visual С++, распространяемый для Visual Studio 2015:
https://www.microsoft.com/en-us/download/details.aspx?id=48145
Обновление 3 (накопительное обновление):
https://www.microsoft.com/en-us/download/details.aspx?id=53587
Ответ №17
Как говорится в SQLite wiki, развертывание вашего приложения должно быть:
Итак, вам нужно следовать правилам. Найдите dll, который соответствует вашей целевой платформе, и поместите ее в папку, описанную на картинке. Dll можно найти в файле YourSolution/packages/System.Data.SQLite.Core.% Version%/.
У меня были проблемы с развертыванием приложений, поэтому я просто добавил в свой проект правильный SQLite.Interop.dll, добавленную папку x86 в AppplicationFolder в проект установки и добавленные ссылки на файлы для dll.
Ответ №18
У меня такая же проблема. Однако, наконец, я могу это исправить. В настоящее время я использую Visual Studio 2013 Community Edition. Я просто использую Добавить- > Существующий элемент… и просматриваю, где находятся файлы SQLite.Data.SQLite(в моем случае это “C:Program Files (x86)System.Data.SQLite2013бин). Не забудьте изменить тип того, что вы будете включать в Файлы сборки (*.dll; *.pdb). Выберите” SQLite.Interop.dll” в этой папке. Оттуда я могу продолжать без каких-либо проблем. Желаю вам всем удачи. ^ _ ^
Постскриптум Я создаю приложение для веб-форм. Я еще не пробовал в приложении для оконной формы или других приложений.
Ответ №19
Перед установкой установите целевую платформу для x86 или x64 (а не любой CPU):
Project- > Properties- > Build- > Платформа в Visual Studio.
Ответ №20
Скопируйте файл SQLite.Interop.dll в каталог проекта.
src
project
bin <-- Past in bin
x64
SQLite.Interop.dll <-- Copy this if 64
x86
SQLite.Interop.dll <-- Copy this if 32
Ответ №21
Я долгое время боролся с этим, и иногда я обнаружил, что установка теста неверна. Смотреть это изображение:
Я просто сниму настройку теста, и проблема исчезнет. В противном случае произойдет исключение.
Надеюсь, это поможет кому-то.
Не уверен, что это основная причина.
Ответ №22
Также добавил dll в тестовый проект (через Nuget Manager) и исправил его.
Ответ №23
Может ли быть конкуренция за сборку? Проверьте, есть ли другое приложение с блокировкой файлов в DLL.
Если это причина, для обнаружения нарушительной программы должно быть легко использовать инструмент Sysinternal Process Explorer.
НТН,
Глина
Ответ №24
Я не знаю, был ли это хороший ответ, но я смог решить эту проблему, выполнив мое приложение под AppDomain с идентификатором “Local System”.
Ответ №25
Я работаю над простым консольным приложением, чтобы добавить некоторые тестовые данные в базу данных SQLite и получал эту ошибку. Конфигурация для проекта – “Любой процессор”. Я исправил его, скопировав файл SQLite.Interop.dll в папку bindebug. Лучшим способом было бы использовать метод @Wil, но как вы определяете это для конфигурации “Любой процессор”?
Ответ №26
Для справки для любого, кто смотрит на этот вопрос:
Если вы используете пакет nuget, он устанавливает правило сборки, которое выполняет для вас копирование. (см. в разделе System.Data.SQLite.Core.1.0.94.0build – или любую другую версию ядра, которую вы устанавливаете).
Установщик nuget автоматически добавляет правило в файл проекта.
Это все еще не устраняет проблему с тестовым случаем. Подход DeploymentItem (qaru.site/questions/50916/…) – единственное, что, кажется, работает там.
Ответ №27
У меня была эта проблема, потому что Visual С++ 2010 распространялся без установки на моем компьютере. Если вы еще не установили распространяемый дистрибутив Visual С++ 2010 Download и установите это (проверьте x86 или 64 dll).
Ответ №28
Я столкнулся с этой проблемой, в решении с веб-проектом WebAPI/MVC5 и проектом тестирования функций, которое оборачивается одним и тем же проектом доступа к данным (или “Core” ). Я, как и многие другие здесь, использую копию, загруженную через NuGet в Visual Studio 2013.
То, что я сделал, было в Visual Studio, добавило папку решений x86 и x64 в тестер функций и веб-проекты. Затем я сделал Right Click | Add Existing Item...
и добавил соответствующую библиотеку SQLite.interop.dll из ..SolutionFolderpackagesSystem.Data.SQLite.Core.1.0.94.0buildnet451[appropriate architecture]
для каждой из этих папок. Затем я сделал a Right Click | Properties
и установил Copy to Output Directory
в Always Copy
. В следующий раз, когда мне нужно было запустить мои функциональные тесты, тесты прошли успешно.
Ответ №29
Короче
Чтобы заставить это работать и с NCrunch, мне пришлось добавить версии Interop.dll, поставляемые с пакетом NuGet, в виде дополнительных файлов в конфигурации NCrunch.
Мой случай
У меня было решение С# с одним проектом напрямую в зависимости от SQLite (вспомогательная библиотека) и проекта unit test, который использовал эту вспомогательную библиотеку. Я установил System.Data.SQLite.Core версии 1.0.97.0 как пакет NuGet.
В моем случае обходной путь предоставленный Marin, он работал в Visual Studio и в CI. Однако это все равно приведет к ошибкам в NCrunch.
В конфигурации NCrunch я добавил следующий путь в разделе “Дополнительные файлы для включения” в настройках проектов unit test:
..packagesSystem.Data.SQLite.Core.1.0.97.0buildnet45**.dll
Ответ №30
Скопировать файлы SQLite.Interop.dll для x86 и x64 в папку отладки. эти файлы должны копироваться в папки “x86” и “x64” в папке отладки.