MsBuild с файлами решений с DefineConstants
В настоящее время в моей автоматической сборке я использую файл devenv.exe для создания файлов решений:
devenv /build myproject1.sln
Теперь я хочу создать две версии моего приложения, обычную версию и легкую версию. Исходный код для этих двух версий один и тот же, это просто, что в легкой версии некоторые функции отключены, и для этого я использую директивы препроцессора #define lite (In csproject, эти константы определены в DefineConstants
Property Group).
В MsBuild - или просто нормальная сборка devenv - можно ли указать, должен ли я содержать символ в сборке? Причина, по которой я спрашиваю об этом, заключается в том, что я хочу сначала создать файл sln
с директивами препроцессора lite
(для облегченной версии), а второй раз, без директив lite
препроцессора (для полной версии).
Ответы
Ответ 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, укажите правильную конфигурацию, в которой нужно построить.