2008-11-22 16 views
2

我正在爲MSBuild創建一個自定義ITask,它將上傳我的構建的輸出文件。我正在使用Web部署項目來發布我的應用程序並掛接到AfterBuild目標來完成我的自定義工作。MSBuild ITaskItem數組已過時

如果我將文件添加到我的Web應用程序中,第一次構建時,我的自定義任務不識別最近添加的文件。爲了讓這個文件出現在我的ITaskItems數組中,我必須先刪除我的'AfterBuild'目標,然後用我的'AfterBuild'目標重新開始構建。

這裏是我的build文件看起來像:

<ItemGroup> 
    <PublishContent Include="$(OutputPath)\**" /> 
</ItemGroup> 

<Target Name="AfterBuild"> 
    <UploadTask FilesToPublish="@(PublishContent)" /> 
</Target> 

在@(PublishContent)名單,似乎在構建之初反映可能通過構建已發生的任何變化進行初始化,而不是處理自己。

任何想法?

感謝

回答

1

你的ItemGroup會在項目文件首次加載(當你第一次打開Visual Studio或你卸載「和「刷新」 Solution Explorer中的項目)得到評估。

你可能需要的是在你的'AfterBuild'目標中創建一個ItemGroup作爲一個任務。例如:

<CreateItem Include="$(OutputPath)\**"> 
     <Output TaskParameter="Include" ItemName="OutputFiles"/> 
</CreateItem> 

後跟:

<Target Name="AfterBuild"> 
    <UploadTask FilesToPublish="@(OutputFiles)" /> 
</Target>