如何将System.Data.SQLite合并为一个可执行程序?

本文关键字:一个 可执行程序 System Data 合并 SQLite | 更新日期: 2023-09-27 18:01:42

我试图在c#中创建一个单可执行的应用程序,其中包括SQLite。System.Data.SQLite依赖于一个非托管的DLL (SQLite.Interop.dll),所以我不能与ILMerge合并。

我如何将System.Data.SQLite捆绑到我的项目中,这样我就可以生成一个没有随附dll的单可执行应用程序?

如何将System.Data.SQLite合并为一个可执行程序?

您可以将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();
}