Проблема:
Задача MSBuild (не MSBuild.exe, задача MSBuild имени MSBuild) не может обрабатывать несколько констант, используемых WIX проекты. Как правило, вы бы определить свойства в сценарии сборки, как:
<MSBuild Projects="YourSolution.sln" Properties="Configuration=MyConfig;Platform=x86;DefineConstants="SOMETHING=1;SOMETHINGELSE=2"" />
Что вы видите, однако, глядя на журналы сборки является MSBuild отделяет константы и не сохраняет значения группируются вместе, как и следовало ожидать - подобный чтобы:
Task "MSBuild" Global Properties:
Configuration=MyConfig
Platform=x86
DefineConstants="SOMETHING=1
SOMETHINGELSE=2"
Так что, когда свеча пытается использовать эти константы он обычно реагирует с «ошибка CNDL0150:. Undefined переменной препроцессора„$ (var.SOMETHINGELSE)“Что это означает, что задача MSBuild не правильно обработки свойств, содержат несколько значений «=» в значении, даже если они группируются внутри кавычек. Без значения свойства сгруппированные в кавычки, они, очевидно, должны рассматриваться как отдельные свойства, а не одно значение.
Обойти:
Для того, чтобы решить эту проблему, вам нужно позвонить MSBuild.exe непосредственно и передать эти значения к нему вручную.
msbuild.exe /p:Configuration=MyConfig /p:Platform=x86 /p:DefineConstants="SOMETHING=1;SOMETHINGELSE=2" YourSolution.sln
Это позволит получить ваш постоянную работу так, как вы хотите, чтобы они, без переделки проекта установки WiX.
Примечание: Если вы используете только одну константу, вы можете использовать задачу MSBuild следующим образом:
<MSBuild Projects="YourSolution.sln" Properties="Configuration=MyConfig;Platform=x86;DefineConstants="SOMETHING=1"" />
Существует способ сделать это, используя задачу MSBuild, вместо вызова exe: http://stackoverflow.com/questions/506687/defining-multiple-values-in-defineconstants-in-msbuild-element/4280454#4280454 –
кажется, что если вы не используете msbuild 4, это способ пойти –