Ich bin auf der Suche nach einer meiner Windows Forms-Anwendungen programmgesteuert ausgeführt werden - von der Befehlszeile aus. Zur Vorbereitung habe ich die Logik in ihrer eigenen Klasse von der Form getrennt. Jetzt stehe ich fest und versuche, die Anwendung basierend auf dem Vorhandensein von Befehlszeilenargumenten hin und her zu schalten. Hier.NET App läuft entweder als Windows Form oder als Konsolenanwendung
ist der Code für die Hauptklasse:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
if (args.Length > 1) // gets passed its path, by default
{
CommandLineWork(args);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static void CommandLineWork(string[] args)
{
Console.WriteLine("It works!");
Console.ReadLine();
}
wo Form1
meine Form ist und die It works!
Zeichenfolge ist nur ein Platzhalter für die eigentliche Logik.
Wenn Sie das jetzt in Visual Studio (mit Befehlszeilenargumenten) ausführen, wird der Ausdruck It works!
in die Ausgabe gedruckt. Wenn Sie die Datei /bin/Debug/Program.exe (oder/Release für diese Angelegenheit) ausführen, stürzt die Anwendung jedoch ab.
Gehe ich den richtigen Weg? Wäre es sinnvoller (d. H. Weniger Entwicklerzeit), wenn meine Logikklasse eine DLL ist, die von zwei separaten Anwendungen geladen wird? Oder gibt es etwas ganz anderes, das mir nicht bewusst ist?
Vielen Dank im Voraus!
Welche Ausnahme erhalten Sie, wenn die App abstürzt? Außerdem nehme ich an, es sollte args.Length> = 1 (oder> 0) statt> 1 sein? –