Как мне создать свои собственные определенные константы на основе «Configuration Manager»? - PullRequest
18 голосов
/ 20 октября 2010

Когда я выбираю конфигурацию «Отладка», константа DEBUG активна. Когда я выбираю конфигурацию «Release», константа DEBUG неактивна.

Как я могу создать свои собственные конфигурации, чтобы они включали мои собственные определенные константы. По сути, я хочу, чтобы, если я выбрал конфигурацию «FOOBAR», в моем проекте были активны постоянные FOO и BAR.

Я в основном стараюсь не включать в свои проекты кучу #define FOO, а затем комментировать / раскомментировать их, когда они мне нужны / не нужны.

Ответы [ 3 ]

19 голосов
/ 20 октября 2010

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

enter image description here

РЕДАКТИРОВАНИЕ: Чтобы определить конфигурации сборки, вы можете перейти в Build> Configuration manager, и я думаю, что вы можете определить константы компиляции там же.

1 голос
/ 13 декабря 2016

Это очень старый вопрос, но вот как вы это сделаете в VS2013.

Добавление константы в свойствах проекта не работает для меня.

enter image description here

Что работает, так это открытие файла .csproj для вашего проекта, поиск имени вашей конфигурации и добавление чего-либо в раздел «DefineConstants».

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'BO4_Production|AnyCPU'">
    <OutputPath>bin\BO4_Production\</OutputPath>
    <DefineConstants>TRACE;BUSINESS_OBJECTS_4</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>

В этом примере, когда я нахожусь в VS2013, и я изменяю свою Конфигурацию на «BO4_Production», исходный код будет немедленно отражать это, и любые разделы будут отражать это:

#if BUSINESS_OBJECTS_4
    //  This is the URL of the Business Objects 4 REST services
    string BaseURL = "http://BO3Server:6405/biprws/logon/long");    
#else
    //  This is the URL of the Business Objects 3 web services
    string BaseURL = "http://BO3Server:8080/dswsbobje/services/Session";
#endif

Странно, что это единственный способ сделать #define удар, просто изменив конфигурацию.

Через несколько месяцев ...

На самом деле, отбросьте это. Даже в VS2015 я могу добавить свой условный символ в либо на вкладке "Сборка", либо непосредственно в файле .csproj, но некоторые проекты в моем решении просто ошибаются . Например, у них есть мой определенный символ, когда для этой конфигурации он не должен быть определен. (Я проверил окно Configuration Manager, и все настроено правильно, но VS2015 иногда не работает правильно ..)

1 голос
/ 03 марта 2015

Ниже я кратко описал, как создать новую конфигурацию сборки (скажем, TEST_BUILD ) кроме сборки отладки / выпуска и как определить условную компиляцию в новой конфигурации сборки?

Зайдите в Build -> Configuration Manager -> выберите «New» -> введите TEST_BUILD и выберите параметры копирования из -> Пусто -> нажмите ОК.

  • Здесь необходимо вручную настроить все новые параметры для каждого проекта в файле решения.
  • В качестве альтернативы вы можете скопировать настройки отладки или выпуска сборки в свой новый TEST_BUILD, кроме определенных настроек сборки TEST_BUILD.

    Шаг 1. Скопируйте существующие настройки в новую конфигурацию сборки:
    скопируйте настройки из -> -> нажмите OK. [Или]
    скопируйте настройки из -> -> нажмите OK.

    Шаг 2. Определение макроса:

    Перейти к Свойствам -> Свойства конфигурации -> C / C ++ -> Препроцессор -> Определения препроцессора -> Определить / Добавить TEST_BUILD

    Шаг 3: Включить / отключить часть кода с помощью макроса TEST_BUILD

...