2008-11-22 42 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>