Msbuild 如何使用WIX中的candle定义项目变量?

Msbuild 如何使用WIX中的candle定义项目变量?,msbuild,wix,installation,wix3.5,Msbuild,Wix,Installation,Wix3.5,我想获取一个现有的项目变量并扩展它,但我希望它是全局的,这样我就不必在每个wxs文件中都包含它 我想扩展的是: $(var.MyProject.TargetDir) 我想转身去做 var.MyProject.TargetDir.Help=$(var.MyProject.TargetDir)Help\ 我怎样才能在全球范围内做到这一点 我知道我能做到: <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <?de

我想获取一个现有的项目变量并扩展它,但我希望它是全局的,这样我就不必在每个wxs文件中都包含它

我想扩展的是:

$(var.MyProject.TargetDir)
我想转身去做

var.MyProject.TargetDir.Help=$(var.MyProject.TargetDir)Help\
我怎样才能在全球范围内做到这一点

我知道我能做到:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <?define var.MyProject.TargetDir.Help=$(var.MyProject.TargetDir)Help\ ?>


但是我必须在每个文件中这样做,或者我必须创建一个wxi文件并将其包含在每个文件中。我希望在构建之前对其进行预定义。我该怎么做

您可以使用Candle定义预处理器变量,如下所示:

candle.exe -dMyVariable=whatever.
这不是一个很难用谷歌找到的答案,但我的问题是,我试图做到:

candle.exe -dMyProject.TargetDir.Help=$(var.MyProject.TargetDir)Help\
所以我在这里有点粗心,忘记了
$(var.MyProject.TargetDir)
也是由candle创建的,我不能在创建之前引用它

您必须手动查找文件的路径,如下所示:

candle.exe -dMyProject.TargetDir.Help=$(SolutionDir)MyProject\bin\$(Configuration)\Help\
另外,请注意,您创建的变量的前缀不是'var'