16 Stimmen

Entfernen von Code aus Release-Build in .NET

Ich habe einige Leistungstests rund um die Verwendung von System.Diagnostics.Debug durchgeführt, und es scheint, dass der gesamte Code im Zusammenhang mit der statischen Klasse Debug vollständig entfernt wird, wenn die Release-Konfiguration erstellt wird. Ich habe mich gefragt, woher der Compiler das weiß. Vielleicht gibt es eine Klasse oder ein Konfigurationsattribut, mit dem man genau dieses Verhalten festlegen kann.

Ich versuche, einige Debugging-Code zu erstellen, die ich vollständig aus der Release-Konfiguration entfernt werden soll, und ich habe mich gefragt, ob ich es genau wie die Debug-Klasse tun könnte, wo einfach die Konfigurationsparameter ändert den Code entfernt.

23voto

Jeff Yates Punkte 59874

Sie können die ConditionalAttribute Attribut mit der Zeichenfolge "DEBUG" an eine beliebige Methode anhängen, und die Aufrufe dieses Elements werden nur in DEBUG-Builds vorhanden sein.

Dies unterscheidet sich von der Verwendung des #ifdef-Ansatzes, da Sie damit Methoden zur Verwendung durch andere Personen in ihren DEBUG-Konfigurationen freigeben können (wie die Methoden der Debug-Klasse im .NET-Framework).

19voto

Dave R. Punkte 7176

Visual Studio definiert eine DEBUG-Konstante für die Debug-Konfiguration, die Sie verwenden können, um den Code einzuschließen, der in Ihrem Release-Build nicht ausgeführt werden soll:

#ifdef DEBUG
  // Your code
#endif

Sie können eine Methode jedoch auch mit einem Conditional-Attribut ausstatten, was bedeutet, dass die Methode bei Nicht-Debug-Builds nie aufgerufen wird (die Methode und alle Aufrufstellen werden aus der Assembly entfernt):

[Conditional("DEBUG")]
private void MyDebugMethod()
{
  // Your code
}

2voto

ZombieSheep Punkte 29085

Werfen Sie einen Blick auf Präprozessoranweisungen ...

#if DEBUG
    //code
#endif

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X