9
votes

Est-il possible de créer une méthode de débogage uniquement dans .NET?

est-il possible de créer une méthode qui effectue une assistance de débogage comme le system.diagnostics.debug classe?

Je cherche un moyen de construire une méthode qui, lorsqu'elle est appelée par un assemblage compilé avec le symbole de compilation conditionnelle de débogage défini, entraîne une opération et qui est un non-op quand appelé par un assemblage sans le symbole sans le symbole défini .

Si possible, j'aimerais que cela soit possible pour les appels aux méthodes de débogage pour ajouter une surcharge minimale ou augmenter de taille à la version de libération de l'Assemblée.

Pour clarifier, les méthodes de débogage doivent être dans un ensemble compilé en mode de libération. Les appels vers les méthodes ne doivent générer que des opérations qu'à partir d'un assemblage avec le symbole de débogage défini dans la portée de l'appel de la méthode.


0 commentaires

5 Réponses :


6
votes

conditionnelAnnattribute

BTW Le code de la méthode étant appelée reste dans l'assemblage - ce sont les appels qui sont supprimés au temps de compilation

Bonus Topical Blog Post: http://blogs.msdn.com/ericlippert/archive/2009/09/10/What-s-the-ference-between-conditionnel-compilation-et-and- l'attribut.aspx


0 commentaires


3
votes

Si vous désassemblez System.Diagnostics.debug classe en utilisant réflecteur vous pouvez voir Ceci est fait en utilisant le [conditionnel ("débogage")] attribut: xxx


0 commentaires

1
votes

Si vous avez besoin d'une autre signature que de module de fonctionnement (..) sans paramètres, Ce qui n'aurait faux pas avec xxx

Il est plus verbeux et moins élégant que le conditionnelattribute, mais cela vous permettrait une signature plus flexible.


0 commentaires

0
votes

Pourquoi ne pas essayer quelque chose comme ça? XXX


2 commentaires

Cela crée un problème où la méthode n'existe pas lors de la compilation sous une construction non déboguée. Tout code essayant d'appeler cette méthode ne compilerait alors pas. La classe de débogage est des méthodes que vous pouvez appeler du code de débogage, mais à laquelle les appels sont supprimés lors de la compilation du code de version.


@Tragedian Même avec les problèmes que vous avez mentionnés peut être une solution supérieure dans certaines circonstances. Ceci est une réponse valide aussi longtemps que ce que vous avez mentionné est pris en compte.