10
votes

Désactiver ou supprimer toutes les appels writes Console #?

Dans mon application, j'ai beaucoup de Console # Writeeline ou Console # écrire des appels . C'est tellement important que l'application est vraiment plus lente que nécessaire.

Donc, je cherche un moyen facile de supprimer ou du moins désactiver toutes les consoles # écrivain et Console # écrire appels.

Quel est le moyen le plus simple d'atteindre ça?


4 commentaires

À l'avenir, vous voudrez peut-être utiliser #if debug ou utilisez le conditionnelAnttribute et votre propre méthode d'impression de débogage.


Je le fais déjà, mais au début du projet, je ne l'ai pas fait.


Littering #Si de débogage pour la console.priteline dans l'application sonne comme une mauvaise idée pour moi ... Utilisez un moteur de journalisation où vous pouvez adapter le niveau au moment de l'exécution


@Aaron: C'est pourquoi j'ai mentionné le conditionnelattribute. ;-)


6 Réponses :


6
votes

Peut-être trouvez-vous et remplacer la fonction dans n'importe quel éditeur de code? Par exemple, trouvez tous xxx

et remplacer par xxx


5 commentaires

J'ai pensé à ça, mais le problème est que j'aurais une regex ou quelque chose comme ça.


Et puis j'ai beaucoup d'espaces dans le code parce que je devrais remplacer l'appel avec "" ou quelque chose comme ça.


Peut-être que ce que j'ai écrit serait assez?


Hmm oui cela pourrait être une solution. Je ferai cela si je ne trouve pas une solution simple pour l'éliminer complètement.


Si vous venez de commenter cela, vous n'auriez pas besoin de regexp et au cas où vous auriez besoin d'une journée, ces appels writes vous entraîneront simplement



3
votes

S'ils sont non essentiels (journalisation), vous devez utiliser system.diagnostics.debug.print () pour commencer.

Heureusement Writeeline () est compatible avec débogage.print () C'est donc un S & R Easy. Et réparer des usings peut-être.

Remplacement de console.write () pourrait être un peu plus délicieux.

Pour être complet: les instructions debug.Print () peuvent être activées / désactivées avec une case à cocher dans Project | Propriétés.


0 commentaires

1
votes

Utilisez une boîte de dialogue simple, non regex, trouver / remplacer et remplacer chaque console.writeline ( par débog.writeline ( .

Vous pouvez ensuite garder la possibilité de suivre ce qui a été préalablement sortie directement sur la fenêtre de la console, optimisant toujours les performances en mode de libération.


2 commentaires

Debug.writeline ne gère pas les mêmes paramètres.


@Henk Holterman: Tu as raison. Je garde ma réponse (cela peut être utile si dans ce cas précis, les paramètres étaient très basiques, comme une seule chaîne à chaque fois), mais je préfère votre réponse.



1
votes

dans Visual Studio, utilisez les outils Outils | Macros | Enregistrez l'option macro temporaire d'enregistrement pour enregistrer une macro qui fait une recherche de "console.write" et supprime la ligne. C'est:

Ctrl + F pour trouver "console.write" puis ctrl + l pour supprimer la ligne.

Enregistrez la macro puis exécutez-le contre chaque fichier du projet qui a les lignes incriminées.

devrait prendre environ deux minutes.

Je suggérerais cependant que vous sauvegardez-vous d'abord votre source. Juste au cas où.


0 commentaires

28
votes

Voici une solution rapide encore plus rapide que j'ai implémentée.

...
static int Main(String[] args)
{
...
#if !DEBUG
    Console.SetOut(TextWriter.Null);
    Console.SetError(TextWriter.Null);
#endif
...
}


1 commentaires

C'est une meilleure réponse, car elle ne nécessite pas de syntaxe de commentaire, elle ne nécessite aucune modification du code. Voir ma réponse de supplément ci-dessous, utilisez-la lorsque vous souhaitez désactiver temporairement la sortie temporaire.



1
votes

Pour éteindre console.writeline () sortie dans l'exécution temporairement utiliser xxx

De même, vous pouvez désactiver le programme Debug.writeline () Sortie en runtime, également lors de la compilation du mode de débogage, en utilisant un textwriterTracitTracisener, comme xxx

Remarque: j'ai testé au-dessus du code .NET Framework 4.7.2 En mode de débogage, à l'aide de la plate-forme WinForms.


0 commentaires