如何为TFS构建工作流注册工作流扩展类?

时间:2014-04-15 18:48:27

标签: tfs inversion-of-control workflow-foundation-4 tfsbuild service-locator

我基本上试图对为TFS构建工作流开发的一些自定义活动进行一些控制反转。

我听说过WF通过ActivityContext.GetExtension<T> method支持服务定位器模式,但是我无法找到关于在运行时运行该主机的主机上注册自定义“扩展”对象的位置/时间的引用建立过程。

我觉得这与IIS托管工作流服务的情况类似,其中one needs to write a custom WCF behavior for injection of extensions into the host,但我在TFS构建过程中没有看到相同的情况。

1 个答案:

答案 0 :(得分:1)

看看

http://msdn.microsoft.com/en-us/library/vstudio/system.activities.codeactivity(v=vs.100).aspx 您可以在自定义活动中覆盖此CodeActivity.CacheMetadata(CodeActivityMetadata)方法

传递的参数使您可以访问扩展和其他上下文项 http://msdn.microsoft.com/en-us/library/vstudio/system.activities.codeactivitymetadata(v=vs.100).aspx AddDefaultExtensionProvider

我使用了&#39; init&#39;将自定义项目注入上下文并在其他活动中重复使用此项目的活动,请注意工作流程是否持续存在&#39;跨越构建确保您的活动重置状态或将其考虑在内。

2个应该可用且在tfs构建中有用的扩展默认模板是IBuildDetail和IBuildEnvironment(名称可能是错误的)。您可以将数据存储在BuildDetails BuildInformation节点中,您可以从此处访问tfs api服务或其属性。 BuildEnvironment包含已加载的程序集文件夹等信息,可能有助于将某些内容作为文件加载。

请注意,这适用于tfs 2010,可能会有变化,我非常确定如何实现注射更好的方法。