2011-05-26 43 views
1

我有一個自定義的TFS構建過程,用於我的Web應用程序項目,該過程也進行發佈。爲了實現這一點,我試圖從構建中複製編譯的源代碼之前刪除當前的發佈位置。刪除TFS 2010期間的app_offline構建

這可以工作(大部分時間),除非文件因爲有人訪問網站而被鎖定,通常不是問題,因爲大多數時候構建都是在沒有人訪問時發生的(因爲這些都是純開發和QA構建)。

要嘗試修復無法刪除發佈目錄的邊緣情況,我將app_offline.htm文件複製到該目錄,並等待4秒鐘後再嘗試刪除網站的其餘部分。這工作,但我沒有從這一步得到任何錯誤,但是,當我嘗試刪除發佈完成後的app_offline.htm。我收到以下錯誤:

Cannot cancel the workflow. Agent needs to be restarted. Details: The operation could not be performed because WorkflowApplication f670d4fb-d9e3-4f33-bc3d-925faa925e04 is aborted.

刪除是使用自定義的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)); 
      } 
     } 
    } 
} 

我後來添加了「嘗試」參數,試圖捕獲是什麼導致了這個錯誤。

但是,值得注意的是,在查看日誌時,上述錯誤不在DeleteFile活動下,而只在日誌頂部,沒有其他錯誤或警告。

最後,我們tfsbuild用戶刪除發佈目錄的權限(它有沒有問題,刪除該目錄的其餘部分只是app_offline.htm

回答

0

我已經看到了這個錯誤之前被告知,它通常指未處理的異常是從異步線程拋出的,或者是在評估lambda異常以檢索工作流中的參數/變量值時發生的。您可以在構建機器上跳轉或嘗試遠程調試構建服務主機以捕獲未處理的異常(可能是從您最近推出的一項定製活動中拋出)

希望對您有所幫助

0

今天發生了同樣的問題,發現生成服務器上新安裝的病毒防護應用程序已隔離psexec.exe。 TFS構建模板被配置爲加密連接字符串部分,並使用psexec來完成此操作。生成日誌最後有Access Denied錯誤,並且app_offline.htm未被刪除。