2

我正在使用 PowershellTask​​Factory 构建一个字符串,该字符串返回用分号分隔的文件列表。

当我尝试将其传递给我的 Wix 时,它被解释为字符串。我已经与它抗争了很长时间,并决定伸出援手。我真正想要的是要传递给wix的蜡烛应用程序的wx列表,我认为MsBuild会识别出该字符串包含分隔符并将其拆分......但它作为字符串参数传递给蜡烛。

更新 - 已解决

我最终使用了Property Functions的新 MSBUILD 4.0 功能,类似于这个

 <Compile Include="$(builtString.Split(';'))"/>
4

1 回答 1

1

获取作为属性的字符串,并将其转换为项目数组,

<PropertyGroup>
    <ListOfFilesFromPowerShell>a.wxs;b.wxs;c.wxs</ListOfFilesFromPowerShell>
</PropertyGroup>

<ItemGroup>
    <ListOfFilesFromPowerShell Include="$(ListOfFilesFromPowerShell)" />
</ItemGroup>

现在,使用 @(ListOfFilesFromPowerShell) 而不是 $(ListOfFilesFromPowerShell)。当您说“传递给wix的蜡烛应用程序”时,我假设您的意思是使用Exec任务或类似的东西在命令行上传递给candle.exe,看起来像这样,

<Exec
    CommandLine="candle.exe @(ListOfFilesFromPowerShell, ' ') ..."
    ...
    />

这将给出以下命令行,

candle.exe a.wxs b.wxs c.wxs ...

item 数组上的特殊语法 [, ' '] 用于提供备用分隔符。

于 2011-07-12T03:40:23.103 回答