У меня есть 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 или ссылка на сборку?)
Можете ли вы поделиться своим пониманием?Спасибо.