Как создать собственные определенные константы на основе "Configuration Manager"?
Когда я выбираю конфигурацию "Отладка", константа DEBUG
активна. Когда я выбираю конфигурацию "Release", константа DEBUG
неактивна.
Как я могу создать свои собственные конфигурации, чтобы они включали мои собственные определенные константы. В принципе, я хочу, чтобы при выборе конфигурации "FOOBAR" в моем проекте была константа FOO
и BAR
.
В основном я стараюсь не добавлять в свои проекты кучу #define FOO
, а затем комментировать/раскомментировать их, когда мне это нужно/не нужно.
Ответы
Ответ 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