Usted podría hacer lo invierte y establecer el tipo de salida de solicitud a: Aplicación para Windows. A continuación, agregue este código al comienzo de la aplicación.
[DllImport("kernel32.dll", EntryPoint = "GetStdHandle", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll", EntryPoint = "AllocConsole", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int AllocConsole();
private const int STD_OUTPUT_HANDLE = -11;
private const int MY_CODE_PAGE = 437;
private static bool showConsole = true; //Or false if you don't want to see the console
static void Main(string[] args)
{
if (showConsole)
{
AllocConsole();
IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
Microsoft.Win32.SafeHandles.SafeFileHandle safeFileHandle = new Microsoft.Win32.SafeHandles.SafeFileHandle(stdHandle, true);
FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write);
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(MY_CODE_PAGE);
StreamWriter standardOutput = new StreamWriter(fileStream, encoding);
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput);
}
//Your application code
}
Este código mostrará la consola si es showConsole
true
La ventana sigue apareciendo momentáneamente al principio. Supongo que no hay forma de evitar esto, a menos que se cambie el tipo de aplicación. –
Sería bueno si hubiera una forma de evitarlo. De esa forma puedo mostrar la consola cuando estoy en modo de depuración, pero simplemente ejecuto mi programa y salgo (sin ventana) cuando estoy en el modo de ejecución normal. – Vaccano
@Vaccano: es posible hacer que su aplicación sea una aplicación de consola en el modo de depuración solo editando el archivo 'csproj' manualmente. Visual Studio no tiene GUI para hacer esto, pero respetará la configuración si edita el archivo 'csproj' correctamente. – Timwi