Я создаю пакеты из командного файла, используя такие команды, как:
msbuild ..\lib\Package.dproj /target:Build /p:config=%1
Настройки пакетов зависят от набора параметров:
<Import Project="..\optionsets\COND_Defined.optset" Condition="'$(Base)'!='' And Exists('..\optionsets\COND_Defined.optset')"/>
Этот набор параметров определяет условный символ, от которого зависят многие из моих пакетов. Файл выглядит так:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_Define>CONDITION;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>OptionSet</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality/>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>
Теперь мне нужны две сборки: одна с определенным условием и одна без. Моим вектором атаки будет файл с набором опций. У меня есть несколько идей, что делать:
- напишите программу, которая изменяет файл набора параметров, запустите ее перед пакетной сборкой
- возиться с файлами проекта и изменить путь набора параметров, чтобы он содержал переменную среды, а затем иметь разные наборы параметров в разных местах.
Но прежде чем начать изобретать велосипед, я хотел бы спросить, как бы вы справились с этой задачей? Возможно, уже есть средства, предназначенные для поддержки такого случая (например, некоторые переключатели командной строки, вещи, которые я мог бы настроить в Delphi, или магия пакетных файлов).