Переменные Wix, определенные в свойствах проекта, вкладка Build не передается в свечу

В bundle.wxs я пытаюсь установить пользовательскую переменную, которая основана на конфигурации, которая создается следующим образом:

<Variable Name="SETTINGPROVIDERURL" Value="$(var.siteloc)"/>

Я пытаюсь установить siteloc на вкладке «Свойства»> «Сборка» в проекте VS2017. Я пробую как препроцессор, так и wixvariable, чтобы пройти хотя бы один. Вкладка сборки свойств проекта начальной загрузки Wix Visual Studio

в файле wixproj я вижу это:

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <OutputPath>bin\$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
    <WixVariables>siteloc=bar;</WixVariables>
    <DefineConstants>siteloc=foo;</DefineConstants>
  </PropertyGroup>

При сборке я получаю CNDL0150: неопределенная переменная препроцессора '$ (var.siteloc)'. Как видите, моя переменная (любая из них) не была добавлена ​​в качестве параметра свечи в консоли VS:

2>------ Build started: Project: KioskHostBootstrapper, Configuration: Release x86 ------
2>  C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe -dBuildVersion=5.0.307.1 -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\\" -dSolutionDir=C:\centrics\CentricsStoreFront_5_0\Source\ -dSolutionExt=.sln -dSolutionFileName=CentricsStoreFront_5_0.sln -dSolutionName=CentricsStoreFront_5_0 -dSolutionPath=C:\centrics\CentricsStoreFront_5_0\Source\CentricsStoreFront_5_0.sln -dConfiguration=Release -dOutDir=bin\Release\ -dPlatform=x86 -dProjectDir=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostBootstrapper\ -dProjectExt=.wixproj -dProjectFileName=KioskHostBootstrapper.wixproj -dProjectName=KioskHostBootstrapper -dProjectPath=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostBootstrapper\KioskHostBootstrapper.wixproj -dTargetDir=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostBootstrapper\bin\Release\ -dTargetExt=.exe -dTargetFileName=KioskHostSetup.exe -dTargetName=KioskHostSetup -dTargetPath=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostBootstrapper\bin\Release\KioskHostSetup.exe -dKioskHostInstaller.Configuration=Release -d"KioskHostInstaller.FullConfiguration=Release|x86" -dKioskHostInstaller.Platform=x86 -dKioskHostInstaller.ProjectDir=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostInstaller\ -dKioskHostInstaller.ProjectExt=.wixproj -dKioskHostInstaller.ProjectFileName=KioskHostInstaller.wixproj -dKioskHostInstaller.ProjectName=KioskHostInstaller -dKioskHostInstaller.ProjectPath=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostInstaller\KioskHostInstaller.wixproj -dKioskHostInstaller.TargetDir=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostInstaller\bin\Release\ -dKioskHostInstaller.TargetExt=.msi -dKioskHostInstaller.TargetFileName=KioskHostInstaller.msi -dKioskHostInstaller.TargetName=KioskHostInstaller -dKioskHostInstaller.TargetPath=C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostInstaller\bin\Release\KioskHostInstaller.msi -out obj\Release\ -arch x86 -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixUtilExtension.dll" -ext "C:\Program Files (x86)\WiX Toolset v3.11\bin\\WixBalExtension.dll" Bundle.wxs
2>C:\centrics\CentricsStoreFront_5_0\Source\StoreFrontUtilities\KioskHost\WiXInstaller\KioskHostBootstrapper\Bundle.wxs(20,0): error CNDL0150: Undefined preprocessor variable '$(var.siteloc)'.
2>Done building project "KioskHostBootstrapper.wixproj" -- FAILED.

Я пробовал это предложение SF,

 <PropertyGroup>
    <siteloc>fubar</siteloc>
 </PropertyGroup>

но это не сработало.

Что мне не хватает?


person ToddK    schedule 28.03.2018    source источник
comment
Есть ли у вас где-нибудь еще в вашем wixproj переопределение DefineConstants? Импортируете ли вы файл props / proj / target после фрагмента wixproj, который вы задали с вопросом, который может изменить его определение? Visual Studio раздражающе кэширует файлы proj и импортированные проекты; Вы пробовали перезапустить визуальную студию и перестроить? Если вы определяете <Target Name="AfterBuild><Message Text="DefineConstants: $(DefineConstants)"/></Target> в своем wixProj. Вы видите только текст DefineConstants: в вашем выводе?   -  person Brian Sutherland    schedule 28.03.2018
comment
Я предполагаю, что целью должна быть BeforeBuild, поскольку сборка не завершена :)   -  person Brian Sutherland    schedule 28.03.2018
comment
Бинго! Некоторое время назад я добавил в цель BeforeBuild, чтобы получить версию сборки приложения, для которого я устанавливаю, а затем установил ее с помощью DefineConstants. Получу это по-другому (только что нашел этот stackoverflow.com/a/641094/232226) Добавьте свой комментарий в качестве ответа , и я отмечу это   -  person ToddK    schedule 29.03.2018