I have some code that access an API out on the web. One of the API's parameters allows me to let them know that I am testing.
I would like to only set this parameter in my code when I am testing. Currently, I just comment the code out when I do a release build.
Is there an automatic way of doing this based on the build configuration?
NET Core Launch (console). Other ways to start the program in debugging mode are by pressing F5 or choosing Run > Start Debugging from the menu. Select the Terminal tab to see the "What is your name?" prompt that the program displays before waiting for a response.
You can also click on the line you want to skip to and hit Ctrl+F10 (Run to Cursor).
Press F5 and hover over the type variable again. Repeat this step until you see a value of I in the type variable. Now, press F11 (Debug > Step Into or the Step Into button in the Debug Toolbar). F11 advances the debugger (and executes code) one statement at a time.
You can use one of the following—
Conditional
attributeThe Conditional
attribute indicates to compilers that a method call or attribute should be ignored unless a specified conditional compilation symbol is defined.
Code example:
[Conditional("DEBUG")] static void Method() { }
Conditional
attribute on local function (C# 9)Since C# 9, you may use attribute on a local function.
Code example:
static void Main(string[] args) { [Conditional("DEBUG")] static void Method() { } Method(); }
#if
preprocessor directiveWhen the C# compiler encounters an #if
preprocessor directive, followed eventually by an #endif directive, it compiles the code between the directives only if the specified symbol is defined. Unlike C and C++, you cannot assign a numeric value to a symbol. The #if statement in C# is Boolean and only tests whether the symbol has been defined or not.
Code example:
#if DEBUG static int testCounter = 0; #endif
Debug.Write
methodsDebug.Write
(and Debug.WriteLine
) writes information about the debug to the trace listeners in the Listeners collection.
See also Debug.WriteIf
and Debug.WriteLineIf
.
Code example:
Debug.Write("Something to write in Output window.");
Beware of using #if
directive since it can produce unintended situations in non-Debug (e.g. Release) build. For example, see:
string sth = null; #if DEBUG sth = "oh, hi!"; #endif Console.WriteLine(sth);
In this case, non-Debug build will print a blank message. But, this potentially may raise NullReferenceException
in a different case.
There is also a tool, DebugView, which allow to capture debug information from external applications.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With