Bedingte C#-Kompilierung für Debug- und Release-Builds
Wenn Sie in Visual Studio eine Lösung mit einem einzelnen Projekt konfigurieren, bestimmt die Konfigurationseinstellung der Build-Modus, normalerweise „Debug“ oder „Release“. Bei der Verwendung bedingter Kompilierungsanweisungen wie #if/#then/#elif ist es jedoch wichtig sicherzustellen, dass die richtigen Bedingungen ausgewertet werden.
Im bereitgestellten Code-Snippet möchte der Entwickler zwischen Debug unterscheiden und Freigabemodi zum Festlegen variabler Standardwerte. Der Code gibt jedoch unabhängig von der Konfigurationseinstellung „Mode=Debug“ aus.
Die Verwirrung entsteht durch die vordefinierten Präprozessorsymbole in Visual Studio. DEBUG/_DEBUG wird automatisch für Debug-Builds und RELEASE für Release-Builds definiert. Das bedeutet, dass die Definition von #define DEBUG im Code das standardmäßige VS-Verhalten überschreibt und erzwingt, dass die #if DEBUG-Bedingung immer wahr ist.
Der richtige Ansatz besteht darin, die #define DEBUG-Anweisung zu entfernen und sich stattdessen auf den Präprozessor zu verlassen Von VS definierte Symbole. Der geänderte Code sollte wie folgt aussehen:
#if DEBUG Console.WriteLine("Mode=Debug"); #else Console.WriteLine("Mode=Release"); #endif
Durch die Verwendung von DEBUG als Bedingung prüft der Code das Präprozessorsymbol, das basierend auf der Konfigurationseinstellung definiert ist, und unterscheidet dabei genau zwischen Debug- und Release-Modus.
Das obige ist der detaillierte Inhalt vonWie kann ich die bedingte Kompilierung in C# richtig verwenden, um zwischen Debug- und Release-Builds zu unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!