Es ist wirklich traurig, dass das Schreiben einer Main()-Funktion in einer Assembly-DLL niemals vom .NET-Framework aufgerufen wird. Es scheint, dass Microsoft das vergessen hat.
Aber Sie können es leicht selbst umsetzen:
In die DLL-Assembly fügen Sie diesen Code ein:
using System.Windows.Forms;
public class Program
{
public static void Main()
{
MessageBox.Show("Initializing");
}
}
In der Exe-Assembly, die diese DLL lädt, fügen Sie dann diese Funktion hinzu:
using System.Reflection;
void InitializeAssembly(Assembly i_Assembly)
{
Type t_Class = i_Assembly.GetType("Program");
if (t_Class == null)
return; // class Program not implemented
MethodInfo i_Main = t_Class.GetMethod("Main");
if (i_Main == null)
return; // function Main() not implemented
try
{
i_Main.Invoke(null, null);
}
catch (Exception Ex)
{
throw new Exception("Program.Main() threw exception in\n"
+ i_Assembly.Location, Ex);
}
}
Natürlich sollten Sie diese Funktion ganz am Anfang aufrufen, bevor Sie irgendetwas anderes mit dieser Baugruppe tun.
0 Stimmen
Mögliche Duplikate von Werden Modul-Initialisierungen in Silverlight und Windows Phone 7 unterstützt?