msbuild String to Array - PullRequest
       38

msbuild String to Array

2 голосов
/ 12 июля 2011

Я строю строку с помощью PowershellTaskFactory, которая возвращает список файлов, разделенных точкой с запятой.

Когда я пытаюсь передать это моему в Wix, это интерпретируется как строка. Я боролся с этим довольно долго и решил протянуть руку. Что мне действительно нужно, так это список wxs, который нужно передать в приложение свечей wix, и я подумал, что MsBuild распознает, что строка содержит разделитель, и разделит ее на части ... но она передается свече в качестве строкового аргумента.

Обновление - решено

Я использовал новую функцию MSBUILD 4.0 в Функции свойств , подобную этой

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

1 Ответ

1 голос
/ 12 июля 2011

Возьмите строку, которая является свойством, и преобразуйте ее в массив элементов,

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

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

Теперь используйте @ (ListOfFilesFromPowerShell) вместо $ (ListOfFilesFromPowerShell).Когда вы говорите «передано в приложение свечей wix», я предполагаю, что вы имеете в виду, что передали в командной строке свечу Candle.exe с помощью задачи Exec или чего-то подобного, что выглядело бы так:

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

Thisвыдаст следующую командную строку:

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

Специальный синтаксис [, ''] в массиве элементов используется для предоставления альтернативного символа-разделителя.

...