У меня есть DLL >> System.Data.SQLite.dll
Чтобы использовать его обычным способом> просто добавьте его как ссылку и
using System.Data.SQLite;
затем , Я могу использовать все функции внутри этой DLL.
Но , я хочу объединить мой app.exe и эту DLL в один файл. Я пробовал использовать ILmerge , но потерпел неудачу. Насколько мне известно, ILmerge не может объединять неуправляемые библиотеки DLL.
Итак, я попробовал другой метод> сделать DLL как встроенный ресурс. Я могу загрузить его как сборку с помощью следующего кода:
Stream stm = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApp.System.Data.SQLite.dll");
byte[] ba = null;
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = stm.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
ba = ms.ToArray();
}
Assembly sSQLiteDLL = Assembly.Load(ba);
но как я собираюсь использовать функции в SQLiteDLL?
Я также попытался добавить DLL в качестве ресурса в свойствах и загрузить ее следующим образом:
public Form1()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
InitializeComponent();
}
System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
AppDomain domain = (AppDomain)sender;
if (args.Name.Contains("System_Data_SQLite"))
{
return domain.Load(MyApp.Properties.Resources.System_Data_SQLite);
}
return null;
}
Выше было объяснено, что у меня есть на данный момент, и я не знаю, что делать дальше, чтобы использовать DLL? Я все еще не могу использовать функции внутри DLL.
Например, когда я набираю это:
SQLiteCommand cmd = new SQLiteCommand();
Visual Studio сообщает:
Ошибка 21 Не удалось найти тип или имя пространства имен 'SQLiteCommand' (вам не хватает директивы using или ссылки на сборку?)
Не могли бы вы поделиться своим мнением? Спасибо.