2010-06-18 178 views
0

獲得%(RecursiveDir)指令我正在開發一個自定義的MSBuild任務,通過從基本任務類繼承。我的任務調用Microsoft.Build.Tasks.dll中聲明的複製任務,在該過程中設置DestinationFolder屬性。我的自定義任務已宣佈了一個名爲DestinationFolder財產MSBuild從自定義任務參數

public ITaskItem DestinationFolder { get; set; } 

當調用從構建/項目文件,這個任務我可能會傳遞一個參數,比如

<MyTask DestinationFolder="C:\Development\Test\%(RecursiveDir)" 

我的問題是,當這任務執行後,DestinationFolder屬性似乎不知道%(RecursiveDir)位,而只是似乎設置爲C:\Development\Test\Bin

This question似乎表明沒有解決此問題的方法。這絕對是這種情況嗎?我想知道是否可以將屬性聲明爲簡單的字符串,然後創建一個TaskItem對象,如果DestinationFolder字符串包含特殊的%(RecursiveDir)指令,然後相應地設置TaskItem對象。

回答

0

鏈接的問題處理來自任務的輸出參數,其中處理輸入。這裏的問題是你已經將DestinationFolder聲明爲ITaskItem,但是你傳遞的是一個字符串。

你還沒有給我足夠的例子來弄清楚你想要做什麼,但假設你有一個名爲「C:\ Development \ Test \ Bin \ SomeFile.txt」的文件,你

<ItemGroup> 
    <DestinationFolderArgument Include="C:\Development\Test\**\SomeFile.txt" /> 
</ItemGroup> 
<MyTask DestinationFolder="@(DestinationFolderArgument)" /> 

現在你的任務將有機會獲得所有項目的元數據,並RecursiveDir將包含「賓\」:可以在您的項目像定義一個項目。

相關問題