2011-07-12 120 views
2

我正在用PowershellTask​​Factory構建一個字符串,該字符串返回用分號分隔的文件列表。msbuild字符串到數組

當我嘗試將此傳遞給我的Wix時,它被解釋爲一個字符串。我已經打了很長一段時間了,並決定伸出援手。我真正想要的是要傳遞給wix蠟燭應用程序的wxs列表,我認爲MsBuild會認識到該字符串包含分隔符並將其分開......但它作爲字符串參數傳遞給蠟燭。

更新 - 解決

我最終使用的Property Functions新的MSBuild 4.0功能,類似於此

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

回答

0

就拿字符串,它是一個屬性,並將其轉換爲一個項目陣列,

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

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

現在,使用@(ListOfFilesFromPowerShell)而不是$(ListOfFilesFromPowerShell)。當你說「傳遞給維克斯的蠟燭應用程序」我假設你的意思是通過在命令行中使用Exec任務,或類似的東西,它看起來像這樣candle.exe,

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

這會給以下命令行,

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

項目數組上的特殊語法[,'']用於提供備用分隔符。

+0

我實際上使用wix msbuild擴展提供的CompilerAdditionalOptions參數。我嘗試了各種@ $%替代品和分隔符說明符無濟於事。雖然感覺很不舒服,但我已經開始工作了(見編輯)。感謝您的答覆! – Bill