2

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

如果我将文件添加到我的 Web 应用程序,那么在我第一次进行构建时,我的自定义任务无法识别最近添加的文件。为了使该文件显示在我的 ITaskItems 数组中,我必须首先在删除“AfterBuild”目标的情况下进行构建,然后使用“AfterBuild”目标重新开始构建。

这是我的构建文件的样子:

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

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

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

有任何想法吗?

谢谢

4

1 回答 1

1

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

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

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

其次是:

<Target Name="AfterBuild">
    <UploadTask FilesToPublish="@(OutputFiles)" />
</Target>
于 2008-11-23T21:40:07.200 回答