【问题标题】:How to spawn an offline process from a TFS vNext build step that would last beyond the build?如何从 TFS vNext 构建步骤生成一个离线进程,该步骤将持续到构建之后?
【发布时间】:2018-11-12 20:52:37
【问题描述】:

似乎如果我的构建步骤产生了一个子进程,那么该进程将无法在构建结束后继续存在 - 它会被杀死。

但我有一个场景,其中触发子进程以完成构建不应等待完成的某些操作(向 Azure AppInsights 报告指标)。

此过程在 XAML 构建中运行良好,但现在我们迁移到 vNext,它被破坏了,因为子进程在构建结束时被终止。

有什么办法呢?

【问题讨论】:

    标签: tfs azure-devops vnext


    【解决方案1】:

    最简单的方法是使用任务调度器来调度任务。

    使用Microsoft.Win32.TaskScheduler NuGet 包的示例:

    using (var ts = new TaskService())
    {
        // Create a new task definition and assign properties
        var td = ts.NewTask();
        td.Triggers.Add(new TimeTrigger(DateTime.Now.AddDays(-1)));
        td.Actions.Add(new ExecAction(MyExe, MyArgs));
        ts.RootFolder.RegisterTaskDefinition(MyTaskName, td).Run();
        ts.RootFolder.DeleteTask(MyTaskName);
    }
    

    【讨论】:

    • 必须创建计划并在完成后自动删除。您是否碰巧知道如何从 C# 中完成此操作的详细信息?我可能可以谷歌它,但这些细节会让你的答案真的很棒。
    • 我知道:)。一直没时间查。有很多关于从 powershell 设置计划任务的示例。一个在线的 powershell 脚本任务就可以解决问题。根据它的用法,我要么给它一个固定的名称,然后把它留在那里,要么使用构建定义 ID 或其他东西来清理它。然后将该 id 作为参数传递给 schedules 任务。
    • 我冒昧地编辑了您的问题并根据我为自己所做的添加示例代码。再次感谢。
    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2016-11-17
    • 2023-03-07
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多