Vous voyez la sortie de la console dans Visual Studio 2010?


163

J'écris un simple programme C # avec quelques sorties ( Console.WriteLine("...");). Le problème est que chaque fois que je l'exécute, je ne peux pas voir la sortie du programme dans la fenêtre de sortie.

La balise "sortie du programme" est déjà cochée, et j'ai déjà redirigé toutes les sorties vers la fenêtre intermédiaire mais en vain.

Comment activer l'affichage de la sortie du programme?

Je ne pense pas que le problème réside dans mon code. J'ai essayé d'exécuter un programme simple qui sort juste une chaîne et une ligne de lecture "ala hello world" et je ne vois toujours aucune sortie. Le problème est que je recherche la sortie au mauvais emplacement ou que Visual Studio fonctionne.

La debug.writeméthode ne fonctionne pas non plus.

En utilisant debug.Write, tout fonctionne, même si ce n'était pas le cas auparavant. Soit quelque chose s'est déréglé avec moi avant de redémarrer, soit j'ai juste besoin de faire une pause, de toute façon tout va bien maintenant. Merci à tous pour les commentaires utiles =)


7
Visual Studio couvre la fenêtre de votre console. Déplacez-le sur votre autre moniteur.
Hans Passant

Réponses:


195

Vous pouvez utiliser la méthode System.Diagnostics.Debug.Writeou System.Runtime.InteropServicespour écrire des messages dans la fenêtre de sortie.


10
System.Diagnostics.Debug.Write (au cas où l'OP n'aurait pas l'espace de noms en jeu)
jonsca

4
Ah vrai, je suis juste trop habitué à frapper contrôle + période :)
Richard Adnams

jonsca: j'ai un espace de noms en jeu et pourquoi puis-je simplement utiliser console.writeline, je veux que mon programme écrive sur la console, ce n'est pas seulement pour des raisons de test ??
r3x

2
Si votre application est une application console, vous pouvez utiliser console.writeline pour imprimer dans la fenêtre de la console ou si votre application est une application Windows Form, vous pouvez utiliser debug.write. Consultez ce lien pour plus d'informations social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Richard Adnams

1
intéressant ne le savait pas, et oui mon application est une application Windows Form, mais non j'ai essayé d'utiliser la méthode debug.Write même problème, elle compile et tout est pêche mais je ne peux pas voir la sortie n'importe où
r3x

50

Voici quelques points à vérifier:

  1. Pour console.Write/WriteLine, votre application doit être une application console. (cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions, choisissez Propriétés et regardez le combo " Type de sortie " dans l'onglet Application - devrait être " Application console " (notez que si vous avez vraiment besoin d'une application Windows ou d'une bibliothèque de classes, ne ne changez pas cela en application console juste pour obtenir le Console.WriteLine).

  2. Vous pouvez utiliser System.Diagnostics.Debug.WriteLinepour écrire dans la fenêtre de sortie (pour afficher la fenêtre de sortie dans VS, accéder à Affichage | Sortie ) Notez que ces écritures ne se produiront que dans une construction où la condition DEBUG est définie (par défaut, les versions de débogage définissent cela, et les versions de version ne le font pas)

  3. Vous pouvez utiliser System.Diagnostics.Trace.Writelinesi vous voulez pouvoir écrire sur des "écouteurs" configurables dans des versions non déboguées. (par défaut, cela écrit dans la fenêtre de sortie de Visual Studio, tout comme Debug.Writeline)


2
Je ne voyais pas ma sortie, mais je me suis alors rendu compte que je devais exécuter le programme en mode débogage (F5) au lieu de Ctrl + Maj + F5. Merci!
Travis Heeter

System.Diagnostics.Trace.Writeline ne semble pas fonctionner cependant, y a-t-il autre chose que je dois configurer pour cela?
Travis Heeter

1
«1» - fausse déclaration. Mono affiche la sortie correcte pour toutes les applications. «2» - ofc. Le problème est que la méthode ne sort pas non plus vers le terminal. On ne peut donc pas déboguer une application sur le PC sans IDE.
Hi-Angel

34

Ajoutez un Console.Read();à la fin de votre programme. Cela empêchera l'application de se fermer et vous pourrez voir sa sortie de cette façon.

Il s'agit d'une application console que je viens de déterrer qui s'arrête après le traitement mais avant de quitter:

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

Alternativement, vous pouvez simplement ajouter un point d'arrêt sur la dernière ligne.


2
Console.ReadLine fonctionne également, il vous suffit d'appuyer sur Entrée pour continuer là où Read prend n'importe quelle touche standard.
Richard Adnams

c'est une application de formulaire Windows, et la méthode debug.write ni console.writeline semble fonctionner
r3x

Euhm, pourquoi sortez-vous sur la console à partir d'une application Windows Form? Je suggère de sortir sur un formulaire ou une boîte de dialogue à la place. Ou créer une application console ...
Vincent Vancalbergh

oui cela m'a déjà été signalé, c'est juste une erreur stupide de ma part, toujours merci pour la tête haute =)
r3x

Console.Read () fait que la fenêtre de la console obtient le focus et apparaît donc devant VS. Si vous placez simplement un point d'arrêt après un Console.Write (), la fenêtre Console affichera votre sortie mais n'a pas de focus et peut donc ne pas être visible.
Nigel

21

Appuyez sur Ctrl+ F5pour exécuter le programme au lieu de F5.


1
Ctrl + F5 démarre l'application sans débogage, vous ne verrez rien dans la fenêtre de sortie.
Richard Adnams

6
Cela a fonctionné pour moi; Je voulais juste voir ce que le programme produisait, aucune sortie de la console n'apparaissait. Cela l'a amené à garder la fenêtre de la console ouverte après l'exécution afin que je puisse voir la sortie.
davenpcj

+1, c'est celui-ci, si vous ne voulez pas réellement déboguer (montre la console, et permet de lire la sortie).
mlvljr

8

System.Diagnostics.Debug.WriteLine()fonctionnera, mais vous devez chercher au bon endroit pour la sortie. Dans Visual Studio 2010, dans la barre de menus, cliquez sur Déboguer -> Windows -> Sortie . Maintenant, en bas de l'écran ancré à côté de votre liste d'erreurs, il devrait y avoir un onglet de sortie. Cliquez dessus et vérifiez qu'il affiche la sortie du flux de débogage dans la liste déroulante.

PS: Je pense que la fenêtre de sortie apparaît sur une nouvelle installation, mais je ne m'en souviens pas. Si ce n'est pas le cas, ou si vous l'avez fermé par accident, suivez ces instructions.


0

Pour garder ouverte votre console Windows et ne pas utiliser d'autres méthodes de sortie plutôt que le flux de sortie standard, allez dans Nom-de-votre-projet -> Propriétés -> Linker -> Système.

Une fois là-bas, sélectionnez l'onglet Sous-système et marquez Console (/ SUBSYSTEM: CONSOLE). Une fois que vous avez fait cela, chaque fois que vous voulez compiler, utilisez Ctrl + F5 (Démarrer sans débogage) et votre console restera ouverte. :)


Je pense que c'est applicable à C ++, pas à C # comme dans la question.
Dmitry Fedorkov

0

Je rencontre cela fréquemment pour une raison quelconque, et je ne peux pas comprendre pourquoi cette solution n'a pas été mentionnée:

Cliquez sur AffichageSortie (ou maintenez Ctrlet appuyez simplement sur W> O)

La sortie de la console apparaît alors à l'endroit où se trouvent votre liste d'erreurs , les paramètres locaux et les fenêtres de surveillance .

Remarque: j'utilise Visual Studio 2015.


La fenêtre de sortie que vous mentionnez semble avoir été générée par le débogueur car elle contient de nombreuses lignes relatives aux assemblys en cours de chargement, aux threads qui démarrent et s'arrêtent, etc. Ceci est différent de la sortie de la console.
PeterVermont

0

Visual Studio couvre à lui seul la fenêtre de la console, essayez de réduire la fenêtre Visual Studio dans laquelle elles sont dessinées les unes sur les autres.


-1

Dans Program.cs, entre:

static int Main(string[] agrs)
{

et le reste de votre code, ajoutez:

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif

Veuillez ajouter une description, comment votre code résout le problème.
Koopakiller

-4

Vous pouvez créer 2 petites méthodes, l'une qui peut être appelée au début du programme, l'autre à la fin. Vous pouvez également utiliser Console.Read (), afin que le programme ne se ferme pas après la dernière ligne d'écriture.

De cette façon, vous pouvez déterminer quand votre fonctionnalité est exécutée et aussi quand le programme existe.

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}

Je ne vois pas comment cette réponse apporte de nouvelles informations à la question puisque la possibilité Console.Read () a déjà été énoncée auparavant.
ForceMagic
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.