Я на самом деле ищу решение объединить все DLL и EXE в один файл.
Я задал вопрос здесь:
Какиспользовать загрузку DLL из Embed Resource?
, и я получил предложение, что я могу связать DLL как ресурс встраивания, затем записать файл DLL встраивания в память и использовать DLLImport для импортаDLL.
Я следовал инструкциям здесь:
http://weblogs.asp.net/ralfw/archive/2007/02/04/single-assembly-deployment-of-managed-and-unmanaged-code.aspx
и ниже, что я сделал:
[DllImport("System.Data.SQLite.dll")]
public static SQLiteConnection sqLiteConnection1 = new SQLiteConnection();
public Form1()
{
ResourceExtractor.ExtractResourceToFile("MyApp.System.Data.SQLite.dll", "System.Data.SQLite.dll");
}
public static class ResourceExtractor
{
public static void ExtractResourceToFile(string resourceName, string filename)
{
if (!System.IO.File.Exists(filename))
using (System.IO.Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
using (System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Create))
{
byte[] b = new byte[s.Length];
s.Read(b, 0, b.Length);
fs.Write(b, 0, b.Length);
}
}
}
, но Visual Studio сообщает, что этот блок создает ошибку:
[DllImport("System.Data.SQLite.dll")]
public static SQLiteConnection sqLiteConnection1 = new SQLiteConnection();
Ошибка 1 Атрибут 'DllImport' недопустим в этом типе объявления.Он действителен только для объявлений метода.
Как объявить тип внутри этой DLL?
Большое спасибо.