Sqlite interop dll что это
I am using 1.0.82.0. version, installing it with nuget in VS2010, OS Win7 64.
Once exception starts to appear, it appears constantly - in debug and release and running application within or outside VS.
The only way to stop it is logoff and logon. The exception is not thrown and dll is loaded. It can work for days, but then it can break again.
Has anyone seen something like this and is there a solution for it?
Yes, it's set to copy always. I have x64 and x86 folders in bin/debug. And it works mostly, but sometimes just stops to work. Probably something is blocking the access to the dll, I will try to find it out next time it stops to work. As I said it may work days without any problems.
I got this error right out of the box after adding the SQLite nuget package to a new console project. Manually copying SQLite.Interop.dll from the x86 folder up one level allows the app to run. Seems strange to me that this would be so broken.
@Wayne Yes, this definitely helps. But in my case, we are working together on the project, and my friend is using x86, while me x64 OS. And as I noticed, it just stops to work sometimes. Though it didnt happen to me last month.
If you download correct binary for SQLite then copy SQLite.Interop.dll into your Release or Debug folder according to your project build option.
This is such a random bug. sometimes it occurs and sometimes it doesn't for my project. Tried everything.
Комментарии пользователей для "sqlite.interop.dll"
Текущим параметрам фильтрации удовлетворяют несколько файлов. Будут показаны комментарии ко всем файлам.
С чего начать
Если вы используете среду разработки Visual Studio (в частности версию 2008), то вам может так же пригодиться SQLite Designer, который дает возможность использовать визуальные средства для работы с базами SQLite: построитель запросов (Query Builder), редактирование таблиц и ряд других возможностей.
Ну и в дополнение ко всему в поставку библиотеки провайдера входит сборка System.Data.SQLite.Linq.dll, которая обеспечивает доступ к технологии LINQ.
Комментарии ко всем файлам с именем "sqlite.interop.dll"
БЕЗОПАСНЫЙ оценка пользователя Rajuk для файла %PROGRAMFILES%\Livedrive\sqlite.interop.dll
Подробности о наиболее часто используемом файле с именем "sqlite.interop.dll"
Продукт: System.Data.SQLite Компания: Robert Simpson, et al. Описание: System.Data.SQLite Interop Assembly Версия: 1.0.84.0 MD5: 1a6e13760d5638a45ad316bb7f3ae59c SHA1: 4715b188ff57104793a3037fce91e2f8e0d9e2bc SHA256: c251eefb3031128ad43f4e13b3bd4d1c74b91ad5298584b6ccba5f9ff8814d88 Размер: 817152 Папка: %PROGRAMFILES%\Heimdal\Service ОС: Windows 8 Частота: Высокая
System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем.
Заключение
Думаю, возможностей SQLite должно хватить для достаточного обширного круга задач. В тоже время не стоит пытаться использовать её в каких-либо серьёзных проектах с очень большими объёмами данных и большим количеством пользователей, так как данная СУБД для этого не предназначена: в ней отсутствует поддержка многопроцессорности и ограничены уровни изоляций для транзакций. В общем, для средних проектов, типа базы данных небольшой компании или телефонного справочника, самое подходящее средство.
P.S.: В своих примерах я использовал x86-версию сборки System.Data.SQLite.dll.
В нашей базе содержится 756 разных файлов с именем sqlite.interop.dll . You can also check most distributed file variants with name sqlite.interop.dll. Чаще всего эти файлы принадлежат продукту System.Data.SQLite. Наиболее частый разработчик - компания Robert Simpson, et al.. Самое частое описание этих файлов - System.Data.SQLite Interop Assembly. Совокупная оценка - 5( 5 ) (комментариев: 1 ). Этот файл - динамически подключаемая библиотека. Такая библиотека может загружаться и выполняться любым работающим процессом.
Библиотека "sqlite.interop.dll" безопасная или опасная?
Последний новый вариант файла "sqlite.interop.dll" был обнаружен 3316 дн. назад. В нашей базе содержится 38 шт. вариантов файла "sqlite.interop.dll" с окончательной оценкой Безопасный и ноль вариантов с окончательной оценкой Опасный . Окончательные оценки основаны на комментариях, дате обнаружения, частоте инцидентов и результатах антивирусных проверок.
Добавить комментарий для "sqlite.interop.dll"
Для добавления комментария требуется дополнительная информация об этом файле. Если вам известны размер, контрольные суммы md5/sha1/sha256 или другие атрибуты файла, который вы хотите прокомментировать, то вы можете воспользоваться расширенным поиском на главной странице .
Если подробности о файле вам неизвестны, вы можете быстро проверить этот файл с помощью нашей бесплатной утилиты. Загрузить System Explorer.
Ошибки библиотеки динамической компоновки SQLite.Interop.dll
Файл SQLite.Interop.dll считается разновидностью DLL-файла. DLL-файлы, такие как SQLite.Interop.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например MpSigStub.exe. Данные файлы были созданы для того, чтобы различные программы (например, Sharp World Clock) имели общий доступ к файлу SQLite.Interop.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.
- Нарушение прав доступа по адресу — SQLite.Interop.dll.
- Не удается найти SQLite.Interop.dll.
- Не удается найти C:\Program Files (x86)\Sharp World Clock 8\SQLite.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, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
47 Answers 47
I know I'm late to the party but I had this issue right after I pulled down latest x86/x64 today (version 1.0.88.0). My local IIS in VS2012 runs 32bit by default and there's no easy way to switch to x64. My production server runs 64bit.
Anyway I installed the NuGet package to a DLL project and I got this error. What I had to do to get it working I had to install it to the main site project, too. Even if it doesn't touch SQLite classes at all.
My guess is that SQLite uses the entry assembly to detect which version of Interop to load.
I had to do both install-package Sqlite as well as Install-Package System.Data.SQLite.Core into my website even though the db calls are in a library.
What do you mean by "main site" project? In my case I am doing desktop work. Do you mean the "startup" project?
Well you're right and it is not ideal. I tried to copy the interop dll from the post build event and it doesn't even work. These dll seem to appear in the x86/x64 AFTER the post-build event is called .. somewhat useless.
I had this problem because a dll I was using had Sqlite as a dependency (configured in NuGet with only the Sqlite core package.). The project compiles and copies all the Sqlite dll-s except the 'SQLite.Interop.dll' (both x86 and x64 folder).
The solution was very simple: just add the System.Data.SQLite.Core package as a dependency (with NuGet) to the project you are building/running and the dll-s will be copied.
Go to Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution. -> Online -> All. Then Search for sqlite and add System.Data.SQLite Core (x86/x64).
So, after adding the NuGet the deployment doesn't copy down the Interops. You can add this to your csproj file and it should fix that behavior:
Yes, ContentSQLiteInteropFiles is the answer. 1. This should be the accepted answer 2. On the other hand, it should be investigated, that as a nuget package how to make this work automatically, or at least document the need for this configuration.
Should be the accepted answer. Super simple. 1. unload project 2. add the above to csproj 3. reload project. it's that easy.
How does one arrive at such a solution? Is there some documentation as to what exactly adding this code does? Would very much appreciate more info.
I had this same problem when using SQLite in a WPF project whose platform target was Any CPU . I fixed it by following the following steps:
- Open the project designer in Visual Studio. Details on how to do it can be found here.
- Click on the Build tab.
- Disable the prefer 32-bit option.
Alternatively, you could just set the platform target to x86 or x64 . I think this problem is caused by the System.Data.SQLite library using the platform target to get the location of the 'SQLite.Interop.dll' file.
In case the project designer cannot be reached, just open the project ( *.csproj ) file from a text editor and add the value
The option is only enabled on EXE projects, but I think most of us have this issue with unit test projects.
Was greyed out for me in a WPF project in VS Pro 2015. .csproj file had it set to false already, but still had the error.
This is how I fixed it in my project.
It was working, and when a colleague submitted his changes, I received the "Unable to load DLL 'SQLite.Interop.dll'" exception.
Diffing the project's .csproj file, this was in the NON-WORKING version:
And this is what the WORKING version had:
After reverting back, I didn't receive the exception. The DLL files were dumped in the appropriate Debug\x64 (etc) folders.
When you get in this state, try performing a Rebuild-All. If this fixes the problem, you may have the same issue I had.
Some background (my understanding):
SQLite has 1 managed assembly (System.Data.SQLite.dll) and several platform specific assemblies (SQLite.Interop.dll). When installing SQLite with Nuget, Nuget will add the platform specific assemblies to your project (within several folders: \x86, \x64), and configures these dlls to "Copy Always".
Upon load, the managed assembly will search for platform specific assemblies inside the \x86 and \x64 folders. You can see more on that here. The exception is this managed assembly attempting to find the relevant (SQLite.Interop.dll) inside these folders (and failing).
My Scenario:
I have 2 projects in my solution; a WPF app, and a class library. The WPF app references the class library, and the class library references SQLite (installed via Nuget).
The issue for me was when I modify only the WPF app, VS attempts to do a partial rebuild (realizing that the dependent dll hasn't changed). Somewhere in this process, VS cleans the content of the \x86 and \x64 folders (blowing away SQLite.Interop.dll). When I do a full Rebuild-All, VS copies the folders and their contents correctly.
My Solution:
To fix this, I ended up adding a Post-Build process using xcopy to force copying the \x86 and \x64 folders from the class library to my WPF project \bin directory.
Alternatively, you could do fancier things with the build configuration / output directories.
The message I got was telling me that those files were missing but I thought it was a permission issue. Once I saw your message i realized they never actually made it to the server when I deployed.
My near identical solution was to add x86 and x64 folders to my startup project, then add the x86 interop and x64 interop files within their respective folders. I set the files' option to "content" and "build always." This is the only way I could get my Windows Forms app to connect to an embedded s3db database file when I deployed the app with ClickOnce to other PC's. Frustratingly, I didn't have an SQLite error when I developed and tested the app on my PC.
This is the answer that helps me understand my problem, although my fix is a bit different. My problem is that I added the system.data.Sqlite.dll manually. In this way the Sqlite.Interop.dll is not automatically copied to \x86 and x64. The fix is to delete the reference and add it by Nuget.
I had the same issue running Visual Studio Express 2013. I tried several solutions mentioned here and elsewhere to no avail. I hope this fix helps others.
I fixed it by using the DeploymentItem attribute on my test class that tests the SQLite-based service.
This causes the needed SQLite.Interop.dll to get copied to the x86 directory within the appropriate "TestResults" folder.
All is green. All is good.
This is a correct solution if you're using MSTest. SQLite worked fine, finding the SQLite.Interop.dll with no issue, until I used DeploymentItem("some.csv") for a test. Including the .csv file in that way triggered MSTest to copy all referenced dlls over to the TestResults directory. Since SQLite.Interop.dll is not referenced in the project (and cannot be since it's unmanaged code), it never got copied over.
Your best bet is to add two lines, one for each architecture. That protects you in the event the test runner happens to be running 64-bit.
Updating NuGet from Tools -> Extension and updates and reinstalling SQLite.Core with the command PM> Update-Package -reinstall System.Data.SQLite.Core fixed it for me.
If you get an error when doing this, removing my SQLite DLLs/references and completely reinstalling them from nuget did the trick for me
reinstall sqllite core help to me too. Occured at VS2012. VS didn't include x62 version to web deploy package
I had a similar issue in a multiple projects solution. The SQLite.Interop.dll was necessary for one of the plugins distributed with the software using ClickOnce.
As far as debugging in visual studio everything worked fine, but the deployed version was missing the folders x86/ and x64/ containing that DLL.
The solution to have it work after deployment using ClickOnce was to create in the startup project of the solution (also the one being published) these two subfolder, copy into them the DLLs and set them as Content Copy Always.
This way the ClickOnce publishing tool automatically includes these files and folders in the manifest and deploys the software with them
this was the only solution that worked for me. and boy.. was it a pain to debug when your app just closes on a user's pc.
Add the following to your csproj on your "main"/root project
i.e. projects beginning with
Add PrivateAssets="none" to each ProjectReference/PackageImport in the dependency chain down to the System.Data.Sqlite PackageImport
ouput successfully show: Copying file from "..\packages\System.Data.SQLite.Core.1.0.105.2\build\net451\x64\SQLite.Interop.dll" to "XXProject\release\x64\SQLite.Interop.dll". Copying file from "..\packages\System.Data.SQLite.Core.1.0.105.2\build\net451\x86\SQLite.Interop.dll" to "XXProject\release\x86\SQLite.Interop.dll".
There are really a lot of answers here, but mine is simple and clear with no-GAC-playing-around.
The problem was, the executable File needs a copy of the right SQLite.Interop.dll (x86 or x64) to access our Database.
Mostly architectures have layers and in my case the Data Layer has the required DLL for SQLite Connection.
So i simple put a post build script into my Data Layer Solution and everything worked fine.
Set all Projects of your solution to x86 or x64 in the build options.
Add following Post-Build-Script to the Project with the SQLite nuget Package :
xcopy "$(TargetDir)x64" "$(SolutionDir)bin\Debug\" /y
Of course you have to change the script for Release Build and x86 builds.
Put your SQLite.Interop.dll next to the *.exe File.
Add a declaration for the kernel32.dll function call to SetDLLDirectory() before your Program.Main():
Then use your own method for determining the correct subdirectory to find the architecture specific version of 'SQLite.Interop.dll'. I use the following code:
If you don't want to read all the issue, the solution is to copy the file "msvcr100.dll" (that can be found in Windows\System32 directory) in the same path as SQLite.Interop.dll.
I would advice to read the issue to understand why, and to include the file in your setup but to install it only if the error occurs, I made it an optional component selectable in the setup options.
I don't know why this has not been included yet, but I had to do the research and find this out for myself, so hopefully someone will find this answer and be saved the trouble. This was for a WPF app. It worked fine on my Dev box, but did not work on the computer where I was copying it and got the Unable to load DLL 'SQLite.Interop.dll' error. I ported over all of its associated directories and files, directly from my "Debug" folder to this other computer when I got the same error as the OP when I ran it. My "bin" folder that contained my DLLs had been copied to "Debug\bin" and all were included, along with my application files when I did my copying to the other computer using this path, so it was not missing any files.
Things I saw said in other answers that did not apply:
- I did not use the NuGet package or need to create x86 or x64 folders that it seems that NuGet package creates. My DLLs (System.Data.SQLite and SQLite.Interop.dll, along with System.Data.SQLite.config) are in the "bin" folder in my project and were copied in manually (create "bin" folder in Solution Explorer in VS, paste DLLs into this folder in Windows Explorer, use Add > Existing Item to bring files into VS folder/project). Then I reference them as Referenced Assemblies in my project using that location ("References" > "Add Reference", and browse to one, rinse, repeat for the rest). This ensures my project knows exactly where they are.
- I did not need to reference any SQLite DLL file in my app.config or even touch my MyProject.csproj file.
- I did not even need to specify a particular processor! My project's build is for "Any CPU", even though I have only mixed or 64-bit DLLs and will only be running on Windows 7+, which are 64-bit OSes. (no x86-only/32-bit solely DLLs)
- I was already specifying them as "Content" and "copy if newer" for these DLLs when I experienced the OP's error.
(11) Why do I get a DllNotFoundException (for "sqlite3.dll" or "SQLite.Interop.dll") when trying to run my application?
Either the named dynamic link library (DLL) cannot be located or it cannot be loaded due to missing dependencies. Make sure the named dynamic link library is located in the application directory or a directory along the system PATH and try again. Also, be sure the necessary Visual C++ runtime redistributable has been installed unless you are using a dynamic link library that was built statically linked to it.
В некоторых проектах достаточно часто возникает необходимость в хранении данных, объем которых уже нельзя назвать маленьким, но в тоже время использовать какую-либо СУБД слишком накладно из-за сложности развертывания приложения. И тут на помощь приходит такая прекрасная вещь как SQLite – компактная встраиваемая база данных.
Шаг 2. Если вы недавно установили приложение Sharp World Clock (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Sharp World Clock.
Чтобы удалить программное обеспечение Sharp World Clock, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):
После полного удаления приложения следует перезагрузить ПК и заново установить Sharp World Clock.
Если на этапе 2 также не удается устранить ошибку SQLite.Interop.dll, перейдите к шагу 3 ниже.
Sharp World Clock 8.4.6
Шаг 3. Выполните обновление Windows.
Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла SQLite.Interop.dll. Мы храним полную базу данных файлов SQLite.Interop.dll со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии Sharp World Clock . Чтобы загрузить и правильно заменить файл, выполните следующие действия:
Windows 10: C:\Program Files (x86)\Avira\System Speedup\x86\
Windows 10: C:\Program Files (x86)\Avira\Game Booster\x64\
Windows 10: C:\Program Files\VDownloader\x86\
Windows 10: C:\Users\Tester\AppData\Local\Apps\2.0\PBKKG9EJ.PC6\L4RDGD0J.462\iexp. exe_de920447ba0a2002_0004.0003_none_a5aacf1ad00718ec\x64\
Windows 10: C:\Users\Tester\AppData\Local\Apps\2.0\PBKKG9EJ.PC6\L4RDGD0J.462\iexp..tion_de920447ba0a2002_0004.0003_530a5bc63d62a78a\x64\
Показать на 22 каталогов больше +
Windows 10: C:\Program Files (x86)\Duplicate Cleaner Free\x64\
Windows 10: C:\Program Files (x86)\Avira\Game Booster\x86\
Windows 10: C:\Program Files\iolo technologies\System Mechanic\PrivacyGuardian\x64\
Windows 10: C:\Program Files\iolo technologies\System Mechanic\x64\
Windows 10: C:\Users\Tester\AppData\Local\Apps\2.0\PBKKG9EJ.PC6\L4RDGD0J.462\iexp. exe_de920447ba0a2002_0004.0003_none_a5aacf1ad00718ec\x86\
Windows 10: C:\Users\Tester\AppData\Local\Apps\2.0\PBKKG9EJ.PC6\L4RDGD0J.462\iexp..tion_de920447ba0a2002_0004.0003_530a5bc63d62a78a\x86\
Windows 10: C:\Program Files (x86)\Duplicate Cleaner Free\x86\
Windows 10: C:\Program Files (x86)\Avira\Privacy Pal\x64\
Windows 10: C:\Program Files\iolo technologies\System Mechanic\PrivacyGuardian\x86\
Windows 10: C:\Program Files\iolo technologies\System Mechanic\x86\
Windows 10: C:\Users\Tester\AppData\Roaming\Free Snipping Tool\App\x64\
Windows 10: C:\Program Files (x86)\Sharp World Clock 8\
Windows 10: C:\Program Files (x86)\Razer\Razer Services\GMS\x64\
Windows 10: C:\Program Files (x86)\Avira\Privacy Pal\x86\
Windows 10: C:\Program Files\Softland\novaPDF 10\Server\x64\
Windows 10: C:\Users\Tester\AppData\Roaming\Free Snipping Tool\App\x86\
Windows 10: C:\Program Files\WinZip\
Windows 10: C:\Program Files (x86)\Razer\Razer Services\GMS\x86\
Windows 10: C:\Program Files (x86)\Avira\System Speedup\x64\
Windows 10: C:\Program Files\Softland\novaPDF 10\Server\x86\
Windows 10: C:\Program Files\VDownloader\x64\
Windows 10: C:\Program Files (x86)\Nero\Nero Platinum\Nero BackItUp\
Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.
СОВЕТ ОТ СПЕЦИАЛИСТА: Мы должны подчеркнуть, что переустановка Windows является достаточно длительной и сложной задачей для решения проблем, связанных с SQLite.Interop.dll. Во избежание потери данных следует убедиться, что перед началом процесса вы создали резервные копии всех важных документов, изображений, установщиков программного обеспечения и других персональных данных. Если вы в настоящее время не создаете резервных копий своих данных, вам необходимо сделать это немедленно.
Редактирование базы данных SQLite
namespace DataEditor
public partial class _Default : System.Web.UI. Page
private void GridViewDataBind()
//Обновляем данные в GridView1
this .GridView1.DataBind();
>
protected void DetailsView1_ItemDeleted( object sender, DetailsViewDeletedEventArgs e)
GridViewDataBind();
>
protected void DetailsView1_ItemUpdated( object sender, DetailsViewUpdatedEventArgs e)
GridViewDataBind();
>
protected void DetailsView1_ItemInserted( object sender, DetailsViewInsertedEventArgs e)
GridViewDataBind();
>
>
>
Теперь приложение полностью готово к использованию. Окончательный вид редактора для редактирование таблицы workers из базы CompanyWorkers.db3:
Рис. 5. Редактор, готовый к работе.
Благодаря использованию SQLite мне не понадобилось разворачивать каких-либо служб для работы с базой.
Проверьте свой ПК с помощью нашей бесплатной программы
System Explorer это наша бесплатная, удостоенная наград программа для быстрой проверки всех работающих процессов с помощью нашей базы данных. Эта программа поможет вам держать систему под контролем. Программа действительно бесплатная, без рекламы и дополнительных включений, она доступна в виде установщика и как переносное приложение. Её рекомендуют много пользователей.
When I execute my app in VS, everything works fine. However, whenever I publish it (with ClickOnce) and try to run the app, it crashes with the following error : System.DllNotFoundException : Unable to load DLL 'SQLite.Interop.dll' : the specified module cannot be found (Exception from HRESULT : 0x8007007E)
After some research, I found this dll in the Debug folder and copied it in the folder where the ".exe" version of my program is created (after publishing and executing "setup.exe"). This way, the app runs well.
But I'm not really satisfied with this solution, since it seems really dirty. I don't want future users to have to do this manually when they install my app !
Therefore, my question is : What can I do to make sure that this dll is installed together with my program ?
Note : I tried the first answer of this post : unable to load dll sqlite interop dll WPF But I didn't seem to work for me.
Создание базы данных SQLite
class Program
static void Main( string [] args)
string baseName = "CompanyWorkers.db3" ;
public sealed class SQLiteFactory : DbProviderFactory, IServiceProvider
public sealed class SQLiteConnection : DbConnection, ICloneable
Убедиться в том, что база в действительности была создана можно с помощью уже упомянутого Server Explorer, просто создав соединение к файлу базы:
Рис. 1. Просмотр базы данных CompanyWorkers через Server Explorer
Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):
Если на этапе 1 не удается устранить ошибку SQLite.Interop.dll, перейдите к шагу 2 ниже.
10 Answers 10
I also encountered the similar issue in my environment of Visual Studio 2017 and NET Framework 4.5, the circumstance is:
I am developing an Outlook Add Ins using ClickOnce to publish it and SQLite as the database. After having installed the SQLite library into the project from NuGet, it works perfectly in the local environment but pops up the exception error message "Unable to load DLL 'SQLite.Interop.dll'" on the client machine.
I compared the two environments and found the DLL file 'SQLite.Interop.dll' had not been published to the client machine that we can see in the following graphic.
So, my solution is adding these two DLL libraries into the project, then they can be published to the client machine using the ClickOnce.
(Notice: The selected DLL version should be as same as the NET Framework version in your environment.)
This is the best solution I've seen so far. It feels cleaner than adding the System.Data.Sqlite package to the main project. Still not pretty, but I think it's better. It should be an answer on this more prominent Q/A.
You likely need to include the x86 and x64 folders under the the other SQLite DLL.
Edit: I've added the relevant info below in case the above link ever dies/changes.
If the development and customer machines may have different processor architectures, more than one binary package may be required. For this situation, using the native library pre-loading feature is highly recommended. It is available as of version 1.0.80.0 and enabled by default. In order to take advantage of this feature, the separate managed and interop assemblies must be used with XCOPY deployment (i.e. this feature is not supported by the mixed-mode assembly, nor when the assembly is deployed to the global assembly cache), resulting in an application deployment that looks something like this:
- bin\App.exe (optional, managed-only application executable assembly)
- bin\App.dll (optional, managed-only application library assembly)
- bin\System.Data.SQLite.dll (required, managed-only core assembly)
- bin\System.Data.SQLite.Linq.dll (optional, managed-only LINQ assembly)
- bin\System.Data.SQLite.EF6.dll (optional, managed-only EF6 assembly)
- bin\x86\SQLite.Interop.dll (required, x86 native interop assembly)
- bin\x64\SQLite.Interop.dll (required, x64 native interop assembly)
The string "bin" above represents the directory where the application binaries are to be deployed on the target machine. With the native library pre-loading feature enabled and the application deployment shown above, the System.Data.SQLite managed-only assembly will attempt to automatically detect the processor architecture of the current process and pre-load the appropriate native library.
Файлы System.Data.SQLite Interop Assembly, такие как SQLite.Interop.dll, используют расширение DLL. Файл считается файлом Win32 DLL (Библиотека динамической компоновки) и впервые был создан компанией Johannes Wallroth для пакета ПО System.Data.SQLite.
Файл SQLite.Interop.dll впервые был выпущен в ОС Windows 10 10/30/2018 с WinZip 23.0.13300.0. Последнее обновление для Sharp World Clock 8.4.6 состоялось 12/10/2018 [версия файла 1.0.105.2]. Файл SQLite.Interop.dll включен в Sharp World Clock 8.4.6, Free Snipping Tool 4.1 и iExplorer 4.2.2.
Продолжайте читать, чтобы найти загрузку правильной версии файла SQLite.Interop.dll (бесплатно), подробные сведения о файле и порядок устранения неполадок, возникших с файлом DLL.
Совместимость с Windows 10, 8, 7, Vista, XP и 2000
Средняя оценка пользователей
Сведения о разработчике и ПО | |
---|---|
Разработчик ПО: | Robert Simpson, et al. |
Программа: | System.Data.SQLite |
Авторское право: | Public Domain |
Сведения о файле | |
---|---|
Набор символов: | Unicode |
Код языка: | English (U.S.) |
Флаги файлов: | (none) |
Маска флагов файлов: | 0x003f |
Точка входа: | 0x2f1d |
Размер кода: | 953856 |
Информация о файле | Описание |
---|---|
Размер файла: | 1154 kB |
Дата и время изменения файла: | 2020:02:07 15:06:12+00:00 |
Тип файла: | Win32 DLL |
Тип MIME: | application/octet-stream |
Тип компьютера: | Intel 386 or later, and compatibles |
Метка времени: | 2017:06:10 18:24:12+00:00 |
Тип PE: | PE32 |
Версия компоновщика: | 12.0 |
Размер кода: | 953856 |
Размер инициализированных данных: | 227328 |
Размер неинициализированных данных: | 0 |
Точка входа: | 0x2f1d |
Версия ОС: | 6.0 |
Версия образа: | 1.0 |
Версия подсистемы: | 6.0 |
Подсистема: | Windows GUI |
Номер версии файла: | 1.0.105.2 |
Номер версии продукта: | 1.0.105.2 |
Маска флагов файлов: | 0x003f |
Флаги файлов: | (none) |
Файловая ОС: | Win32 |
Тип объектного файла: | Dynamic link library |
Подтип файла: | 0 |
Код языка: | English (U.S.) |
Набор символов: | Unicode |
Наименование компании: | Robert Simpson, et al. |
Описание файла: | System.Data.SQLite Interop Assembly |
Версия файла: | 1.0.105.2 |
Внутреннее имя: | SQLite.Interop |
Авторское право: | Public Domain |
Название продукта: | System.Data.SQLite |
Версия продукта: | 1.0.105.2 |
✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.
Читайте также: