Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSBuild ITaskItem数组已过期_Msbuild_Msbuild Task_Itaskitem - Fatal编程技术网

MSBuild ITaskItem数组已过期

MSBuild ITaskItem数组已过期,msbuild,msbuild-task,itaskitem,Msbuild,Msbuild Task,Itaskitem,我正在为MSBuild创建一个自定义ITask,用于上载生成的输出文件。我正在使用一个web部署项目来发布我的应用程序,并连接到AfterBuild目标来完成我的自定义工作 如果我在第一次构建web应用程序时将文件添加到web应用程序中,我的自定义任务将无法识别最近添加的文件。为了使该文件显示在我的Itaskitem数组中,我必须首先在删除“后构建”目标的情况下进行构建,然后在“后构建”目标就位的情况下再次启动构建 以下是我的生成文件的外观: <ItemGroup> <

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

如果我在第一次构建web应用程序时将文件添加到web应用程序中,我的自定义任务将无法识别最近添加的文件。为了使该文件显示在我的Itaskitem数组中,我必须首先在删除“后构建”目标的情况下进行构建,然后在“后构建”目标就位的情况下再次启动构建

以下是我的生成文件的外观:

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

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

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

有什么想法吗


谢谢

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

您可能需要的是在“后构建”目标中创建一个项目组作为任务。例如:

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

其次是:

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