Как я могу объединить System.Data.SQLite в одну исполняемую программу? - PullRequest
5 голосов
/ 07 июля 2011

Я пытаюсь создать одноисполняемое приложение в C #, которое включает SQLite. System.Data.SQLite зависит от одной неуправляемой DLL (SQLite.Interop.dll), поэтому я не могу объединить ее с ILMerge.

Как я могу включить System.Data.SQLite в свой проект, чтобы я мог создать приложение с одним исполняемым файлом без DLL-библиотек с тегами?

1 Ответ

4 голосов
/ 08 июля 2011

Вы можете включить dll как встроенный ресурс в исполняемый файл, а затем во время выполнения извлечь его (это предполагает, что у программы есть права на запись в любой каталог, в который вы извлекаете dll).

Что-то вроде

string sqllitefile = "sqllite.dll";
Assembly currentAssembly = Assembly.GetExecutingAssembly();

using (FileStream fs = fileInfoOutputFile.OpenWrite())
using (Stream resourceStream =currentAssembly.GetManifestResourceStream(sqllitefile))
{
   const int size = 4096;
   byte[] bytes = new byte[4096];
   int numBytes;
   while ((numBytes = resourceStream.Read(bytes, 0, size)) > 0) 
   {
         fs.Write(bytes, 0, numBytes);
   }
   fs.Flush();
   fs.Close();
   resourceStream.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...