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

MsBuild с файлами решений с DefineConstants

В настоящее время в моей автоматической сборке я использую файл devenv.exe для создания файлов решений:

devenv /build myproject1.sln

Теперь я хочу создать две версии моего приложения, обычную версию и легкую версию. Исходный код для этих двух версий один и тот же, это просто, что в легкой версии некоторые функции отключены, и для этого я использую директивы препроцессора #define lite (In csproject, эти константы определены в DefineConstants Property Group).

В MsBuild - или просто нормальная сборка devenv - можно ли указать, должен ли я содержать символ в сборке? Причина, по которой я спрашиваю об этом, заключается в том, что я хочу сначала создать файл sln с директивами препроцессора lite (для облегченной версии), а второй раз, без директив lite препроцессора (для полной версии).

4b9b3361

Ответ 1

В файле проекта добавьте новый раздел PropertyGroup для облегченной версии

<PropertyGroup Condition="'$(LiteVersion)'=='true'">
   <DefineConstants>$(DefineConstants);lite</DefineConstants>
</PropertyGroup>

Удалите lite из всех определений DefineConstants.

MSBuild.exe  myprojeect1.sln
MSBuild.exe  myprojeect1.sln /p:LiteVersion=true

Вы можете создать дополнительную конфигурацию в VS для переключения между версиями. Но это может привести к несоответствиям конфигурации, когда вы забыли добавить флаг в конфигурацию lite. Я могу предложить более элегантное решение. Создайте файл .bat или измените ссылку для запуска myproject1.sln:

set LiteVersion=true
devenv.exe myproject1.sln

Ответ 2

Создайте две конфигурации в вашем sln файле - один для Lite и один для Normal. В конфигурации Lite определите директиву препроцессора в диалоговом окне "Свойства проекта".

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