【问题标题】:How to execute code on TFS server after a user checks in code用户签入代码后如何在 TFS 服务器上执行代码
【发布时间】:2013-07-18 00:06:34
【问题描述】:

我正在构建一个集成系统,当用户签入某些更改时,它需要在 Team Foundation Server (2010+) 服务器上执行一些代码。我可以图解访问签到没有问题,但我想知道何时添加新签到。理想情况下,我希望收到通知并提供签入数据,以便我可以对其进行操作并将我需要的内容发布到不同的 API,但如果只存在新签入的通知,那就足够了。理想情况下,我可以让 tfs 在同一台机器上执行对我自己的 C# 代码的调用。

过去 2 天我一直在网上浏览,我坚信这是可能的,但是我似乎找不到任何有关如何做到这一点的细节,坦率地说,我正在跑步出在哪里看的想法。如果有人对从哪里开始,从哪里看,或者理想情况下有任何类似的源想法有任何想法,将不胜感激。

主要是,我一直在研究 TFS 集成工具,但其文档充其量仍然值得怀疑。我找到了所有现有的适配器源代码(用于 clearcase 等),但在任何地方都看不到任何触发执行的东西,因为我怀疑这些更适合单向迁移。

【问题讨论】:

  • TFS 有一个事件子系统,您可以在其中订阅事件并执行任意代码。您可以选择两条路线。编写一个服务器端事件处理程序,它使用 TFS 或 SOAP Web 服务在进程内运行。这里有一些很好的起点; #1#2here's 订阅签到事件的广泛引用的事件处理程序。

标签: c# tfs tfsintegrationplatform


【解决方案1】:

有不同的方法可以解决这个问题:

  1. 团队建设。通过使用 TFS 构建服务器,您可以创建持续集成构建或门控签入构建。然后,在构建工作流程中,您可以响应您检测到的任何更改。您可以使用 TFS 客户端对象模型来获取 Changeset 对象。它包含您需要的所有数据。 ALM Rangers 写了一封 extensive guide explaining 如何扩展和自定义构建过程以满足您的需求。

  2. Checkin Policy。通过创建自定义签入策略,您可以在客户端(在 Visual Studio 中)运行代码预签入。 This policy 可以作为如何与未决更改交互的示例。

  3. ISubscriber TFS 应用层插件。 @ppejovic 已经提到过。 Application Tier 插件安装在 TFS 服务器上,并将在进程中运行。由于它是在进程中托管的,因此您可以做很多事情。作用于工作项和/或源代码控制的示例是Merge Work Items 处理程序、TFS Aggregator。如果需要,您还可以退回到客户端对象模型,as described here

  4. SOAP API。这是 ISubscriber 接口的前身。您仍然可以使用它,但您会从 ISubscriber 解决方案中获得更多功能和效率。

  5. Client Object Model。您始终可以在定期连接到 TFS 的系统上创建服务或计划作业,以请求自上次检查以来的历史记录。通过简单地存储查询比您迄今为止看到的最高变更集编号更新的所有内容,您可以获得所需的所有信息,而无需扩展 TFS 本身。您将寻找VersionControlServer 类。 QueryHistory 方法是您获取变更集所需的方法。

有一个不错的 Pluralsight 课程,可以带您了解 some of these scenario's

与大多数这些项目一样,文档很少,并且像 Red-Gate Reflector .NET 这样的工具 或 Jetbrains dotPeek 非常宝贵。

【讨论】:

  • 啊,我的印象是 SOAP API 在 2010 年之后退役,但尽管这可能有用,但 ISubscriber 插件路由似乎是最佳选择。定时历史检查是我的备份计划,但是当它发生时能够做到这一点是首要的。感谢您提供如此简洁有用的答案。你给我的信息比我和其他 2 个人在几天的网络搜索中所能找到的要多。
猜你喜欢
  • 2013-12-27
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2012-03-06
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多