我正在为MSBuild创建一个自定义ITask,它会上传我的构建的输出文件。我正在使用Web部署项目来发布我的应用程序并挂钩到AfterBuild目标以执行我的自定义工作。
如果我将文件添加到我的Web应用程序,第一次进行构建时,我的自定义任务无法识别最近添加的文件。为了让该文件显示在我的ITaskItems数组中,我必须先删除我的'AfterBuild'目标进行构建,然后再使用'AfterBuild'目标再次启动构建。
以下是我的构建文件:
<ItemGroup>
<PublishContent Include="$(OutputPath)\**" />
</ItemGroup>
<Target Name="AfterBuild">
<UploadTask FilesToPublish="@(PublishContent)" />
</Target>
@(PublishContent)中的列表似乎在构建开始时初始化,而不是反映构建过程本身可能发生的任何更改。
有什么想法吗?
由于
答案 0 :(得分:1)
首次加载项目文件时(第一次打开Visual Studio或“卸载”并在解决方案资源管理器中“重新加载”项目),将对您的ItemGroup进行评估。
您可能需要在“AfterBuild”目标中创建一个ItemGroup作为任务。例如:
<CreateItem Include="$(OutputPath)\**">
<Output TaskParameter="Include" ItemName="OutputFiles"/>
</CreateItem>
接下来是:
<Target Name="AfterBuild">
<UploadTask FilesToPublish="@(OutputFiles)" />
</Target>