Подтвердить что ты не робот

Как создать собственные определенные константы на основе "Configuration Manager"?

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

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

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

4b9b3361

Ответ 1

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

enter image description here

EDITED: Чтобы определить конфигурацию сборки, вы можете перейти в сборку > Менеджер конфигурации, и я думаю, что вы также можете определить константы компиляции.

Ответ 2

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

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

введите описание изображения здесь

Что нужно сделать, чтобы открыть файл .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 я могу добавить свой условный символ либо на вкладке "Build", либо непосредственно в файле .csproj, но некоторые из проектов в моем решении просто ошибаются. Например, они имеют мой символ, определенный для этой конфигурации, он не должен быть определен. (Я проверил окно Configuration Manager, и все настроено правильно, но VS2015 просто не поправляет его иногда..)

Ответ 3

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

Перейдите в сборку → Configuration Manager → выберите "Создать" → тип TEST_BUILD и выберите параметры копирования из → Пустой → нажмите OK.

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

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

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

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

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