【问题标题】:Deleting app_offline during TFS 2010 build在 TFS 2010 构建期间删除 app_offline
【发布时间】:2011-05-26 16:09:16
【问题描述】:

我的 Web 应用程序项目有一个自定义 TFS 构建过程,它也进行发布。为此,我尝试在从构建中复制已编译的源之前删除当前发布位置。

这有效(大部分时间),除非文件被锁定,因为有人访问该站点,这通常不是问题,因为大多数时候构建发生在没有人访问它们的情况下(因为这些纯粹是开发和QA 构建)。

为了尝试修复无法删除发布目录的边缘情况,我将 app_offline.htm 文件复制到该目录并等待 4 秒钟,然后再尝试删除站点的其余部分。这可行,但是,当我在发布完成后尝试删除 app_offline.htm 时,这一步我没有收到任何错误。我收到以下错误:

无法取消工作流程。代理需要重新启动。详细信息:无法执行该操作,因为 WorkflowApplication f670d4fb-d9e3-4f33-bc3d-925faa925e04 已中止。

删除是使用自定义 CodeActivity 创建的(因为 TFS 工作流没有删除)。

public sealed class DeleteFile : CodeActivity
{
    // Define an activity input argument of type string
    [RequiredArgument]
    public InArgument<string> File { get; set; }
    public InArgument<int?> Tries { get; set; }

    // If your activity returns a value, derive from CodeActivity<TResult>
    // and return the value from the Execute method.
    protected override void Execute(CodeActivityContext context)
    {
        // Obtain the runtime value of the Text input argument
        int tries = Tries.Get(context) ?? 1;
        for (int i = 0; i < tries; i++)
        {
            try
            {
                System.IO.File.Delete(File.Get(context));
                break;
            }
            catch (System.IO.IOException)
            {
                if (i == tries - 1)
                    throw;
                Thread.Sleep(TimeSpan.FromSeconds(4));
            }
        }
    }
}

我稍后添加了“Tries”参数以尝试找出导致此错误的原因。

但是,需要注意的是,在查看日志时,上面的错误并没有放在DeleteFile活动下,而只是在日志的顶部并且没有其他错误或警告。

最后,我们的 tfsbuild 用户拥有发布目录的删除权限(删除目录的其余部分只是 app_offline.htm 没有问题

【问题讨论】:

    标签: .net workflow-foundation workflow-activity


    【解决方案1】:

    我以前见过这个错误,并被告知这通常意味着从异步线程或在评估 lambda 异常以检索工作流中的参数/变量值时引发了未处理的异常。您可以跳上构建机器或尝试远程调试构建服务主机以捕获未处理的异常(这可能是您最近引入的自定义活动之一引发的)。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      今天遇到同样的问题,发现构建服务器上新安装的病毒防护应用程序隔离了 psexec.exe。 TFS 构建模板被配置为加密连接字符串部分,它使用 psexec 来执行此操作。构建日志最后出现 Access Denied 错误,并且 app_offline.htm 没有被删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-01
        • 2012-12-23
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        相关资源
        最近更新 更多