Compare Debug and Release style build settings.

tooling Build configurations let the same project use different settings for everyday debugging and final release output.

Build Configuration

configuration
BuildConfiguration.cs
Replay: real traced execution (multi-file project)
using System;

class Program
{
    static void Main()
    {
        string configuration = "Debug";
        bool optimize = configuration == "Release";
        bool includeSymbols = configuration != "Release";

        Console.WriteLine($"configuration={configuration}");
        Console.WriteLine($"optimize={optimize}");
        Console.WriteLine($"includeSymbols={includeSymbols}");
    }
}
using System;

class Program
{
    static void Main()
    {
        string configuration = "Release";
        bool optimize = configuration == "Release";
        bool includeSymbols = configuration != "Release";

        Console.WriteLine($"configuration={configuration}");
        Console.WriteLine($"optimize={optimize}");
        Console.WriteLine($"includeSymbols={includeSymbols}");
    }
}
using System;

class Program
{
    static void Main()
    {
        string configuration = "Staging";
        bool optimize = configuration == "Release";
        bool includeSymbols = configuration != "Release";

        Console.WriteLine($"configuration={configuration}");
        Console.WriteLine($"optimize={optimize}");
        Console.WriteLine($"includeSymbols={includeSymbols}");
    }
}
  1. configuration ← Debug, optimize ← False, includeSymbols ← True

    4{5    static void Main()6    {7        string configuration→ Debug = "Debug"; //@configuration="Release", "Staging"8        bool optimize→ False = configurationDebug == "Release";9        bool includeSymbols→ True = configurationDebug != "Release";1011        Console.WriteLine($"configuration={configurationDebug}");12        Console.WriteLine($"optimize={optimizeFalse}");13        Console.WriteLine($"includeSymbols={includeSymbolsTrue}");14    }
    outputconfiguration=Debug
    optimize=False
    includeSymbols=True
  1. configuration ← Release, optimize ← True, includeSymbols ← False

    4{5    static void Main()6    {7        string configuration→ Release = "Release";8        bool optimize→ True = configurationRelease == "Release";9        bool includeSymbols→ False = configurationRelease != "Release";1011        Console.WriteLine($"configuration={configurationRelease}");12        Console.WriteLine($"optimize={optimizeTrue}");13        Console.WriteLine($"includeSymbols={includeSymbolsFalse}");14    }
    outputconfiguration=Release
    optimize=True
    includeSymbols=False
  1. configuration ← Staging, optimize ← False, includeSymbols ← True

    4{5    static void Main()6    {7        string configuration→ Staging = "Staging";8        bool optimize→ False = configurationStaging == "Release";9        bool includeSymbols→ True = configurationStaging != "Release";1011        Console.WriteLine($"configuration={configurationStaging}");12        Console.WriteLine($"optimize={optimizeFalse}");13        Console.WriteLine($"includeSymbols={includeSymbolsTrue}");14    }
    outputconfiguration=Staging
    optimize=False
    includeSymbols=True