Мне тоже стало интересно по этому вопросу, когда я разработал приложение, скопированное из существующей конфигурации сборки выпуска. У меня есть разработчик, который заинтересован в использовании этого приложения в режиме отладки, поэтому мне было интересно, что нужно сделать, чтобы эта конфигурация сборки существовала с именем ReleaseMyBuild, скопированным из конфигурации выпуска (и, таким образом, должна иметь все настройки, предназначенные для оптимизации выпуска ) внезапно менять команды и становиться отладочной сборкой, несмотря на непонятное имя конфигурации сборки. Я подумал, что конфигурация проекта - это просто имя и удобный способ выбрать «полный набор настроек», о котором упоминает Джорис Тиммерманс. Я хотел знать, что это за настройки, которые делают конфигурацию сборки с именем FOO функцией оптимизированной release build.
Вот один проблеск, я создал новый VCXPROJ из пустого шаблона проекта из VS2010. Затем я скопировал его и отредактировал оба: первое, чтобы сохранить содержимое отладки, а второе - содержимое выпуска. Вот разница, сосредоточенная на соответствующих различиях ...
![Empty VCXPROJs Debug vs Release diff](https://i.stack.imgur.com/Tfov9.png)
RELEASE
<PropertyGroup>
<WholeProgramOptimization>true</WholeProgramOptimization>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
DEBUG
<PropertyGroup>
<UseDebugLibraries>true</UseDebugLibraries>`
<ClCompile>
<Optimization>Disabled</Optimization>
Интересно, что в разделе «Связь» у обоих GenerateDebugInformation
установлено значение true.