MsBuild с файлами решений с DefineConstants - PullRequest
16 голосов
/ 19 февраля 2011

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

devenv /build myproject1.sln

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

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

Ответы [ 2 ]

29 голосов
/ 19 февраля 2011

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

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

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

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

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

set LiteVersion=true
devenv.exe myproject1.sln
2 голосов
/ 19 февраля 2011

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

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

...