Just to be clear on this issue, there's not actually anything that's inherently different between "Debug" and "Release". They're just 2 default configurations added to your project by Visual Studio, and by default they're configured such that Debug has optimizations off with debugging features enabled, while Release has has optimizations on with most debugging features disabled. In practice you're free to change the various settings however you want for each configuration, or even create new ones with arbitrary names. Where I work actually use more than just 2 configurations, with various things like optimizations, debug utilities, and asserts turned on and off depending on our needs. So for instance on my team we usually run most of our tools and build system with optimizations on (so it's not slow), but with asserts on so that we know when something goes wrong. Then when we push a build for artists and designers we use a configuration with asserts off.