Salida Console.WriteLine desde aplicaciones de Windows WPF a la consola real

Antecedentes: me cuesta agregar la línea de comandos y las capacidades de procesamiento por lotes a un WPF existenteAplicación de Windows. Cuando detecto algunas opciones al inicio, suprimo la ventana para que no aparezca, hago un procesamiento y salgo inmediatamente. Ahora, porque no hay una interfaz de usuario, me gustaría enviar algunos mensajes a stdout / stderr. Considere el siguiente código:

<code>namespace WpfConsoleTest
{
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            Console.WriteLine("Start");
            System.Threading.Thread.Sleep(1000);
            Console.WriteLine("Stop");
            Shutdown(0);
        }
    }
}
</code>

Cuando corro desde la línea de comandos esperaría la siguiente salida:

<code>Start
Stop
</code>

Pero en lugar:

<code>C:\test>WpfConsoleTest.exe

C:\test>
</code>

puede redirigir la salida, sin embargo:

<code>C:\test>WpfConsoleTest.exe > out.txt

C:\test>type out.txt
Start
Stop
</code>

Redirigir a CON no funciona, desafortunadamente:

<code>C:\test>WpfConsoleTest.exe > CON

C:\test>
</code>

Otro problema es que WpfConsoleTest.exe se cierrade inmediato Después de empezar. Asi que:

<code>C:\test>WpfConsoleTest.exe > out.txt & type out.txt

C:\test>
</code>

Pero:

<code>C:\test>WpfConsoleTest.exe > out.txt & ping localhost > nul & type out.txt
Start
Stop
</code>

La mejor solución que pude encontrar hasta ahora es usarstart /B /wait:

<code>C:\test>start /B /wait WpfConsoleTest.exe > out.txt & type out.txt
Start
Stop
</code>

Este enfoque es en su mayoría correcto: si lo envuelves en un bate, puedes preservar el código de error, etc. La única gran desventaja es que obtienes una salida después de que finaliza la aplicación, es decir, no hay forma de seguir el progreso, tienes que esperar a que termine lo que esté sucediendo.

Por lo tanto, mi pregunta es:Cómo salir a la consola principal desde WPFAplicación de Windows? Además, ¿por qué es tan difícil agarrar stdout / stderr de WPF?

Sé que podría cambiar el tipo de aplicación aAplicación de consola en la configuración del proyecto, pero esto tiene un efecto secundario desagradable: la ventana de la consola está visible todo el tiempo, incluso si simplemente hace doble clic en el archivo exe.Esta solución Tampoco lo hará, porque crea.un nuevo consola, incluso si la aplicación se ejecutó desde cmd.

EDITAR: para aclarar, quiero que mi aplicación salga alexistente consola si hay uno yno Para crear uno nuevo si falta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta