MSBuild ITaskItem数组已过期

时间:2008-11-22 21:02:57

标签: msbuild msbuild-task itaskitem

我正在为MSBuild创建一个自定义ITask,它会上传我的构建的输出文件。我正在使用Web部署项目来发布我的应用程序并挂钩到AfterBuild目标以执行我的自定义工作。

如果我将文件添加到我的Web应用程序,第一次进行构建时,我的自定义任务无法识别最近添加的文件。为了让该文件显示在我的ITaskItems数组中,我必须先删除我的'AfterBuild'目标进行构建,然后再使用'AfterBuild'目标再次启动构建。

以下是我的构建文件:

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

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

@(PublishContent)中的列表似乎在构建开始时初始化,而不是反映构建过程本身可能发生的任何更改。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

首次加载项目文件时(第一次打开Visual Studio或“卸载”并在解决方案资源管理器中“重新加载”项目),将对您的ItemGroup进行评估。

您可能需要在“AfterBuild”目标中创建一个ItemGroup作为任务。例如:

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

接下来是:

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