簡體   English   中英

擴展.Net Workflow XAML文件的替代方法

[英]Alternatives to extending .Net Workflow XAML files

我認為這是工作流程文件的普遍問題,但我將其范圍限定在TFS Build工作流程系統中。

當您從TFS中的模板創建Team Project時,會自動創建一個文件夾,其中包含默認的構建模板,這些模板以后可用於定義內部項目的構建。

為了實例化,我們已經對標准文件進行了一些更改,我們希望對它們進行一些更改:

  • 我們自定義了模板,以檢查解決方案中的.cab安裝程序項目,並使用生成服務器中的本地Visual Studio 2008安裝進行編譯(msbuild不支持.vdproj文件)
  • 我們添加了在構建后自動部署Web應用程序的選項
  • 我們想開始使用現在正式的版本管理工具 (以前由InRelease擁有)來管理我們的版本。 該工具具有觸發TFS Builds發行的功能,並且再次要求在整個構建工作流程中添加某些步驟

最后,我們想更新工作流程,以使用最新項目模板中的最新功能。

這一切都很難維護,因為所有內容都包含在龐大的.xaml文件中,而且所有內容都塞滿了。

有沒有辦法以模塊化的方式優雅地擴展xaml工作流程,最好不影響原始的xaml? 我正在考慮類似裝飾器模式的事情,因為我可以在工作流的某些步驟之間添加行為,而無需將原始實現與它綁定。

如果將整個構建系統划分為多個工作流,並分階段進行 (例如編譯,測試等),那么它會更易於管理,但就我們而言,要保持更新非常困難。

例如,如果公司中的另一個項目想要我們的一些增添但不是全部增添怎么辦? 如果他們也更改了模板並添加了其他我們以后要使用的東西怎么辦? 理想情況下,有可能將新操作從各種外部文件“附加”到現有工作流程。

我從未在任何教程中提到過用於更新/創建工作流文件的內容,因此我假設沒有辦法做到這一點,但我希望證明這一點是錯誤的。

您可以創建一個新的工作流程,然后調用內置的工作流程。 如果您有困難,可以創建一個加載內置xaml的活動

private Activity createActivityFromXml(string xml)
{
    if (!string.IsNullOrEmpty(xml))
    {
        return ActivityXamlServices.Load(new StringReader(xml));
    }
    return null;
}

進行此活動(這是默認的內置工作流程)后,您可以創建一個新的工作流程並包括此活動。 這將允許您在默認工作流程之前或之后添加其他活動。

編輯:通過代碼創建活動(如上所示)應該是您的最新選擇,我認為您可以將現有的xaml放在Visual Studio中並直接使用它,即,通過可視化編輯器可以將其包含在新的wf中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM