Visual studio 2010 - сохранить свойства проекта между различными конфигурациями сборки?
У меня есть два проекта в моем решении. В настоящее время я использую режим конфигурации по умолчанию, который является "Debug". Когда я хочу создать сборку "Release", я переключаюсь в режим Release, а затем вижу, что все мои предыдущие свойства проекта установлены в значение по умолчанию, то есть я должен добавить все свойства снова вручную в этот режим.
Есть ли удобный способ решить эту проблему в VS2010, например, чтобы скопировать все свойства, такие как include paths, макросы препроцессора, макросы сборки и т.д. из режима "Отладка" в "Release"?
Ответы
Ответ 1
Настройки конфигурации хранятся в файле .vcproj
/.vcxproj
. Вы можете открыть его в каком-то текстовом редакторе и скопировать некоторые настройки вручную, но это было бы неудобно. Теперь вы можете просто открыть свойства проектов и скопировать эти настройки при переключении конфигурации Debug
/Release
в верхнем левом углу этого окна.
В следующий раз, когда вы устанавливаете свойства, которые должны быть одинаковыми для всех конфигураций, выберите Конфигурация: All Configurations
, чтобы избежать проблем.
Ответ 2
Листы свойств могут решить эту проблему и несколько других проблем, связанных с собственностью.
Короче говоря, все свойства в проекте являются всего лишь узлами в документе XML, а узлы группы свойств могут иметь атрибут condition
. Их легко изменить в любом текстовом редакторе, но менее известной функцией является возможность импорта других документов XML, которые могут предоставлять настройки (для всех, кроме нескольких конкретных для проекта).
В этом сообщении в блоге есть хороший учебник по использованию листов проекта, а также дополнительная информация в этот вопрос. Вы можете создавать их в Visual Studio, редактировать их (включая копирование существующих параметров проекта), а затем присоединить их к вашему проекту с помощью диспетчера свойств (а не окна свойств).
Группы в вашей таблице свойств используют тот же синтаксис, что и обычные настройки, и могут быть установлены для всех конфигураций или отфильтрованы только для некоторых приложений. Они также могут быть отфильтрованы по имени проекта и нескольким другим вещам, используя переменную и систему условий VS. Например, я использую:
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<Optimization>Disabled</Optimization>
<EnablePREfast>true</EnablePREfast>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
</ItemDefinitionGroup>
для некоторых моих сборников, примените те же настройки ко всему проекту (полный файл здесь).
Одним из наиболее удобных применений является создание каталога сборки в файле, поэтому все ваши проекты строятся равномерно в один и тот же каталог (обязательно используйте имя проекта для вывода).
Ответ 3
Управление почти всеми свойствами в нескольких разных сборках (отладка, выпуск, win32, x64 и т.д.) может выполняться с помощью единой коллекции настроек с помощью макросов.
Таким образом, перед редактированием настроек проекта убедитесь, что вы установили Configurations в All Configurations
и, Platform: to All Platforms
. Теперь почти все настройки могут быть выполнены таким образом во всех разных конфигурациях. Скажем, вы хотите, чтобы разные конфигурации и платформы использовали разные версии различных библиотек. Предполагая, что вы используете соглашение об именах, которое соответствует всем проектам, вы можете использовать:
Дополнительные каталоги библиотек: ..\..\foo\bar\lib\$(Platform)_$(Configuration)
Вы можете увидеть, какие макросы будут расширяться, нажав кнопку редактирования, а затем нажав кнопку Macros>>
.
Ответ 4
Вы также можете воссоздать новый режим, который вы хотите, используя диспетчер конфигурации, а затем вы можете выбрать, из какой конфигурации вы хотите скопировать все настройки.