Quelle est la différence entre Console.WriteLine () et Debug.WriteLine ()?

Quelle est la différence entre Console .WriteLine() et Debug .WriteLine() ?

Console.WriteLine écrit dans le stream de sortie standard, soit dans le débogage ou la version. Debug.WriteLine écrit dans les écouteurs de trace de la collection Listeners , mais uniquement lors de l’exécution du débogage. Lorsque l’application est compilée dans la configuration de la version, les éléments Debug ne seront pas compilés dans le code.

Comme Debug.WriteLine écrit sur tous les écouteurs de trace de la collection Listeners , il est possible que cette sortie se fasse à plusieurs endroits (fenêtre de sortie Visual Studio, console, fichier journal, application tierce qui enregistre un écouteur (je crois DebugView fait cela), etc.).

Console.WriteLine() est destiné aux programmes en mode console. Une fonctionnalité intéressante du processus d’hébergement de Visual Studio est que sa sortie apparaît dans la fenêtre Visual Studio Output lors du débogage des processus qui n’ont pas de console. C’est très utile lors du débogage, mais attention, vous devez supprimer ce code (ou l’envelopper avec un #ifdef DEBUG ) lorsque vous êtes prêt à créer la version Release. Il appenda sinon une surcharge inutile à votre programme. Cela le rend moins idéal pour le traçage de débogage.

Debug.WriteLine() génère des informations de traçage si vous Debug.WriteLine() avec le DEBUG conditionnel DEBUG #defined. Qui est activé par défaut dans la version Debug. Où la sortie se termine peut être configuré dans le fichier app.exe.config . Si cette configuration n’est pas remplacée, .NET fournit automatiquement une instance de la classe DefaultTraceListener . Il envoie le texte Debug.WriteLine() avec la fonction API Windows OutputDebugSsortingng() au débogueur. Le débogueur Visual Studio apparaît dans la fenêtre Sortie, tout comme Console.WriteLine() .

Un avantage certain de Debug.WriteLine() est qu’il ne génère pas de surcharge dans la version Release, les appels sont effectivement supprimés. Il ne supporte cependant pas le formatage composite, vous aurez besoin de Ssortingng.Format() pour cela. Pour le traçage du débogage, la classe Debug devrait être votre choix.

Si vous utilisez Console.WriteLine uniquement pour le débogage, il est préférable d’utiliser Debug.WriteLine .

Si vous souhaitez afficher un message à votre utilisateur, utilisez Console.WriteLine .

Debug.WriteLine est uniquement dans le but de déboguer votre application. Dans le mode de publication, vos instructions de débogage seront ignorées.

Une autre utilisation d’une application console consiste à tester des assemblys privés. Plutôt que l’approche traditionnelle consistant à créer une sorte de logiciel de test GUI pour tester la version compilée de la DLL, vous pouvez simplement reconstruire la DLL en tant qu’application de console et en entrée / sortie de / vers la console. J’ai trouvé cette technique plus rapide que de passer du temps à créer un harnais de test d’interface graphique.