2014-02-12 56 views
0

我认为这是工作流程文件的一般问题,但我会将其范围限定在TFS Build工作流程系统。扩展.Net工作流程XAML文件的替代方案

当您从TFS中的模板创建团队项目时,会自动创建一个包含默认构建模板的文件夹,稍后可以使用这些模板来为其中的项目定义构建。

有我们已经对标准文件做和一些改变一些我们想,对于instace:

  • 我们定制的模板来检查的解决方案和编译他们的.cab安装项目在构建服务器使用的是本地的Visual Studio 2008的安装(的MSBuild不支持.vdproj文件)
  • 我们添加的选项在生成后自动部署我们的Web应用程序
  • 我们想开始使用现在official Release Management tool(以前拥有通过InRelease)来管理我们的版本。该工具有一个功能,触发释放从TFS构建,并再次要求增加一定的措施来全面构建工作流

最后,我们想更新我们的工作流程,使用最先进的最新功能的最新项目模板。

这是非常难以维持,因为一切都包含在与一切挤满了大规模的.xaml文件。

有没有一种方法以模块化的方式优雅地伸出XAML的工作流程,最好在不影响原来的xaml?我正在考虑类似于这里的decorator pattern,因为我可以在工作流程的某些步骤之间添加行为,而无需将原始实施与它绑定。

如果整个构建系统被拆分成阶段(如编译,测试等)的多个工作流程,那么它会更易于管理,但在我们的情况下,更新更加困难。

例如,如果公司的另一个项目想要某些我们的添加,但不是全部?如果他们已经改变了模板并添加了其他的东西,我们以后想要使用什么呢?理想情况下,可以通过外部文件将新操作“附加”到现有工作流程中。

我从来没有见过在任何教程中提到的更新/创建工作流程文件,所以我假设没有办法做到这一点,但我希望被证明是错误的。

回答

1

您可以创建一个新的工作流程,并调用内置的工作流程。 如果你有难的时候,你可以创建加载内置XAML

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

一旦你有这样的活动(这是内置的工作流中的默认设置),您可以创建一个新的工作流程,包括活动这项活动。这将允许您在默认工作流程之前或之后添加其他活动。

编辑:通过代码创建活动(如上图所示)应该是您的最新选项,我认为您可以将现有的xaml放入Visual Studio并直接使用它,即使用可视化编辑器将其包含在新的wf。

+0

非常有趣,但在我们的案例中仍然不完全有用,因为我们的扩展应用于工作流中的特定点,而不是在开始或结束时应用。我会记住这一点,因为我可以看到它是有用的。 – julealgon