Estoy buscando que una de mis aplicaciones de Windows Forms se ejecute mediante programación, desde la línea de comandos. En preparación, he separado la lógica en su propia clase de la Forma. Ahora estoy atascado tratando de hacer que la aplicación cambie de un lado a otro en función de la presencia de argumentos de línea de comando.Aplicación .NET que se ejecuta como Windows Form o como aplicación de consola
Aquí es el código de la clase principal:
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();
}
donde Form1
es mi forma y la cadena It works!
es sólo un marcador de posición para la lógica real.
En este momento, al ejecutar esto desde Visual Studio (con argumentos de línea de comandos), la frase It works!
se imprime en la Salida. Sin embargo, al ejecutar el archivo /bin/Debug/Program.exe (o/Release para ese asunto), la aplicación se bloquea.
¿Voy por esto de la manera correcta? ¿Tendría más sentido (es decir, tomar menos tiempo de desarrollo) que mi clase lógica sea una DLL que se cargue por dos aplicaciones separadas? ¿O hay algo completamente diferente de lo que no estoy enterado?
¡Gracias de antemano!
¿Qué excepción recibe cuando se bloquea la aplicación? Además, supongo que debería ser args.Length> = 1 (o> 0) en lugar de> 1? –