gpt4 book ai didi

MSBuild - 等待 x 秒

转载 作者:行者123 更新时间:2023-12-04 06:55:10 57 4
gpt4 key购买 nike

我有一个部署 Web 应用程序的 MSBuild 脚本。
它通过将“app_offline.htm”文件复制到服务器来停止当前的 Web 应用程序。
在此之后,它会删除其他文件,然后将新文件复制到服务器。

我需要在“app_offline.htm”的复制和删除之间添加一个延迟。

我当前的脚本会抛出错误,因为当脚本尝试删除它们时,文件仍处于锁定状态。

在 MSBuild 中执行此操作的最佳方法是什么?

我的停止任务看起来像这样......

  <Target Name="Stop">
<WriteLinesToFile File="$(DeployDirectory)\app_offline.htm" Lines="Offline for maintenance" Overwrite="true" Encoding="Unicode"/>
</Target>

我的删除任务看起来像这样...
  <Target Name="Clean">
<ItemGroup>
<Files Include="$(DeployDirectory)\**\*" Exclude="$(DeployDirectory)\app_offline.htm" />
<Files Include="$(LogDirectory)\*" />
</ItemGroup>
<Delete Files="@(Files)" />
</Target>

最佳答案

有多种选择:

  • MSBuild Community Tasks有内置Sleep任务。你可以这样使用它:
    <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />
    <Sleep Milliseconds="300" />
  • MSBuild Extension Pack还包含内置 Thread提供 sleep 功能的任务。用法示例 is here .
  • 当然,任何类型的 cmd 兼容等待也可以通过 Exec 工作。命令:
  • 已经提到<Exec Command="ping -n 6 127.0.0.1 > nul" />
  • 我也有 <Exec Command="sleep 5" />很好地为我工作。
  • 您可以为此目的定义 MSBuild 内联 C# 任务:
    <UsingTask TaskName="Sleep" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
    <!-- Delay in milliseconds -->
    <Delay ParameterType="System.Int32" Required="true" />
    </ParameterGroup>
    <Task>
    <Code Type="Fragment" Language="cs">
    <![CDATA[
    System.Threading.Thread.Sleep(this.Delay);
    ]]>
    </Code>
    </Task>
    </UsingTask>

    ...

    <Sleep Delay="5000"/>
  • 关于MSBuild - 等待 x 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41188618/

    57 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com