À partir de Application console projet dans Visual Studio , je souhaite rediriger la sortie de Console
vers la fenêtre Sortie pendant le débogage.
Changez le type d'application en Windows avant le débogage. Sans fenêtre de console, Console.WriteLine fonctionne comme Trace.WriteLine. N'oubliez pas de réinitialiser l'application sur le type de console après le débogage.
class DebugWriter : TextWriter
{
public override void WriteLine(string value)
{
Debug.WriteLine(value);
base.WriteLine(value);
}
public override void Write(string value)
{
Debug.Write(value);
base.Write(value);
}
public override Encoding Encoding
{
get { return Encoding.Unicode; }
}
}
class Program
{
static void Main(string[] args)
{
#if DEBUG
if (Debugger.IsAttached)
Console.SetOut(new DebugWriter());
#endif
Console.WriteLine("hi");
}
}
** Notez que ceci est grossièrement assimilé presque à un pseudo-code. ça marche mais a besoin de travail :) **
Vous pouvez le changer en System.Diagnostics.Debug.Write ();
Notez que si vous utilisez la méthode de dkackman mais que vous voulez écrire la sortie dans les deux fenêtres de la console et de la fenêtre de débogage, vous pouvez légèrement modifier son code comme ceci:
class DebugWriter : TextWriter
{
//save static reference to stdOut
static TextWriter stdOut = Console.Out;
public override void WriteLine(string value)
{
Debug.WriteLine(value);
stdOut.WriteLine(value);
base.WriteLine(value);
}
public override void Write(string value)
{
Debug.Write(value);
stdOut.Write(value);
base.Write(value);
}
public override Encoding Encoding
{
get { return Encoding.Unicode; }
}
}
Essayez Trace.Write et utilisez DebugView
Merci, Alex F, solution intéressante, mais ne fonctionne pas pour moi, car mon projet a été créé par cmake. Donc, pour faire comme suggéré par Alex F, ajoutez WIN32
ou MACOSX_BUNDLE
à add_executable
add_executable(target_name WIN32 <source list>)
Ou, si vous ne pouvez pas modifier le fichier CMakeList.txt, vous pouvez ajouter -DCMAKE_WIN32_EXECUTABLE=1
à la commande cmake
configure.