Build Configurations: Debug vs. Release
Every project builds in one of two configurations by default — and mixing them up is a genuinely common source of "it worked on my machine" confusion.
Debug configuration is for you, while you're actively developing. It includes full debug symbols, disables most compiler optimizations (so stepping through code in the debugger matches your actual source line-by-line), and is the default when you press F5.
Release configuration is for anyone else running your software. It's compiler-optimized (faster, smaller), strips most debug symbols, and is what you'd actually publish or ship — never hand someone a Debug build as your "real" deliverable.
The configuration dropdown lives in the main toolbar, right next to the Start button — switch between Debug/Release (or any custom configuration you've added) before building or publishing.
Custom configurations exist for more complex needs. Beyond Debug/Release, you can define additional configurations (e.g., "Staging") via Build → Configuration Manager — useful when your deployment story genuinely needs more than two states, though most projects never need this.
Conditional compilation reacts to configuration. #if DEBUG / #endif blocks in your code only compile in when building Debug — a common pattern for diagnostic logging or test scaffolding you want present during development but absent from what ships.
Why this matters for you
Confirming you're building/publishing Release, not Debug, before anything goes to a real user is one of those small checks that prevents a genuinely embarrassing, easily-avoided mistake.
▶️ Before the next lesson
Find the configuration dropdown in your toolbar and switch your project to Release, then back to Debug — just to confirm you know where it lives before the next lesson builds on it.