在TFS 2010构建期间删除app_offline

| 我为Web应用程序项目有一个自定义的TFS生成过程,该过程也可以进行发布。为此,我尝试删除当前的发布位置,然后再从构建中复制已编译的源代码。 除大多数人在访问文件而锁定文件(由于多数时间都是在没有人访问它们的情况下进行构建(因为这些纯粹是开发和QA构建))之外,这在大多数情况下都有效。 为了尝试解决无法删除发布目录的情况,我将app_offline.htm文件复制到该目录,并等待4秒钟,然后再尝试删除网站的其余部分。这可行,但是在发布完成后我尝试删除app_offline.htm时,此步骤没有任何错误。我收到以下错误:   无法取消工作流程。代理需要重新启动。详细信息:由于WorkflowApplication f670d4fb-d9e3-4f33-bc3d-925faa925e04被中止,因此无法执行该操作。 使用自定义CodeActivity创建删除操作(因为TFS Workflow没有删除操作)。
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用户对publish目录具有删除权限(仅删除app_offline.htm即可删除其余目录)     
已邀请:
我以前曾经见过此错误,并被告知通常是从异步线程抛出异常或在评估lambda异常以检索工作流中的参数/变量值时抛出的。您可以跳到构建机器上,也可以尝试远程调试构建服务主机以捕获未处理的异常(该异常可能是从您最近引入的自定义活动之一抛出的)。 希望这可以帮助。     
如果今天也发生同样的问题,并且发现构建服务器上新安装的病毒防护应用程序隔离了psexec.exe。 TFS构建模板已配置为加密连接字符串部分,并且它使用psexec进行此操作。生成日志的末尾有“访问被拒绝”错误,并且app_offline.htm尚未删除。     

要回复问题请先登录注册