Visual studio 2010 - сохранить свойства проекта между различными конфигурациями сборки? - PullRequest
12 голосов
/ 11 февраля 2012

У меня есть два проекта в моем решении.В настоящее время я использую режим конфигурации по умолчанию, который называется «Отладка».Когда я хочу выполнить сборку «Release», я переключаюсь в Release-режим, а затем вижу, что все мои предыдущие проекты настроены на значения по умолчанию, что означает, что мне нужно снова вручную добавить все свойства в этот режим.

Есть ли удобный способ решить эту проблему в VS2010, например, скопировать все свойства, такие как пути включения, макросы препроцессора, макросы сборки и т. Д., Из режима «Отладка» в режим «Выпуск»?

Ответы [ 4 ]

12 голосов
/ 11 февраля 2012

Настройки конфигурации хранятся в файле .vcproj / .vcxproj. Вы можете открыть его в каком-нибудь текстовом редакторе и скопировать некоторые настройки вручную, но это не будет удобно. Сейчас вы можете просто открыть свойства проектов и скопировать эти настройки, переключая конфигурацию Debug / Release в верхнем левом углу этого окна.

В следующий раз, когда вы устанавливаете свойства, которые должны быть одинаковыми для всех конфигураций, выберите Конфигурация: All Configurations, чтобы избежать проблем.

5 голосов
/ 11 февраля 2012

Списки свойств могут легко решить эту и некоторые другие проблемы, связанные с недвижимостью.

Короче говоря, все свойства в проекте - это просто узлы в документе XML, и узлы группы свойств могут иметь атрибут condition. Их легко изменить в любом текстовом редакторе, но менее известной функцией является возможность импорта других документов XML, которые могут предоставлять настройки (для всех, кроме нескольких проектов).

В этом блоге есть хорошее руководство по использованию листов проекта, а также дополнительная информация по этому вопросу . Вы можете создавать их в Visual Studio, редактировать их (включая копирование существующих настроек проекта), а затем присоединять их к своему проекту со свойством manager (не окном свойств).

Группы в вашем окне свойств используют тот же синтаксис, что и обычные настройки, и могут быть установлены для всех конфигураций или отфильтрованы, чтобы применяться только к некоторым. Они также могут быть отфильтрованы по имени проекта и нескольким другим вещам, используя систему переменных и условий 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> 

для некоторых моих сборок, чтобы применить одинаковые настройки ко всему проекту ( полный файл здесь ).

Одним из наиболее удобных способов использования является предоставление в файле каталога для сборки, поэтому все ваши проекты собираются одинаково в одном каталоге (обязательно используйте имя проекта для вывода).

1 голос
/ 27 февраля 2015

Управление почти всеми свойствами в разных сборках (отладка, выпуск, win32, x64 и т. Д.) Может быть выполнено с помощью одного набора настроек с помощью макросов.

Таким образом, перед редактированием настроек проекта убедитесь, что для Конфигурации установлено значение All Configurations, а для платформы: All Platforms. Теперь почти все настройки могут быть выполнены таким образом, для всех различных конфигураций. Скажем, вы хотите, чтобы разные конфигурации и платформы использовали разные версии разных библиотек. Предполагая, что вы используете соглашение об именах, которое одинаково для всех проектов, вы можете использовать:

Дополнительные каталоги библиотеки: ..\..\foo\bar\lib\$(Platform)_$(Configuration)

Вы можете увидеть, до каких макросов будут расширяться, нажав кнопку редактирования и нажав кнопку Macros>>.

0 голосов
/ 11 февраля 2012

Вы также можете воссоздать новый режим, который вы хотите, используя менеджер конфигурации, а затем вы можете выбрать, из какой конфигурации вы хотите скопировать все настройки.

...