我正在构建一个集成系统,当用户 checkin 某些更改时,该系统需要在Team Foundation Server(2010+)服务器上执行一些代码。我可以以图解方式访问 checkin 文件,但我想知道何时添加新 checkin 文件。理想情况下,我想得到通知并获得 checkin 数据,以便可以操纵它并将所需的内容发布到其他API,但是如果存在所有新 checkin 的通知,那就足够了。理想情况下,我将能够让tfs在同一台机器上执行对我自己的C#代码的调用。

我过去两天一直在浏览互联网,我对此很有信心,但是我似乎找不到任何详细信息,坦白地说,我的想法已经用光了在哪里看。如果有人对从哪里开始,在哪里看或者对任何类似的原始想法有任何想法,将不胜感激。

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

最佳答案

您可以通过以下几种不同的方法来解决此问题:

  • 团队 build 。通过使用TFS构建服务器,您可以创建“持续集成”构建或“门控 checkin ”构建。然后,您可以在构建工作流程中响应已检测到的任何更改。您可以使用TFS客户端对象模型来获取Changeset对象。包含您需要的所有数据。 ALM Rangers已编写了extensive guide explaining如何扩展和定制构建过程以适合您的需求。
  • Checkin Policy。通过创建自定义 checkin 策略,您可以在客户端(在Visual Studio内部)上运行代码预 checkin 。 This policy可以作为有关如何与未完成的更改进行交互的示例。
  • ISubscriber TFS应用程序层插件。 @ppejovic已经提到过。 Application Tier插件已安装在TFS服务器上,并且将在进程中运行。由于它是托管过程,因此您可以做很多事情。作用于工作项和/或源代码控制的样本是Merge Work Items处理程序TFS Aggregator。如果需要,您还可以返回到客户端对象模型as described here
  • SOAP API。这是ISubscriber接口(interface)的先驱。您仍然可以使用它,但是ISubscriber解决方案将为您提供更多的功能和效率。
  • Client Object Model。您可以始终在定期连接到TFS的系统上创建服务或计划的作业,以请求自上次检查以来的历史记录。通过简单地存储查询到到目前为止您所看到的最大变更集编号以外的所有内容,就可以获取所需的所有信息,而不必扩展TFS本身。您将在寻找VersionControlServer类。 QueryHistory方法是您获取变更集所需要的方法。

  • 有一个不错的Pluralsight类(class),可以指导您完成some of these scenario's

    与大多数此类项目一样,文档稀缺,并且像Red-Gate Reflector .NET这样的工具
    或Jetbrains dotPeek是无价之宝。

    关于c# - 用户 checkin 代码后如何在TFS服务器上执行代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17605479/

    10-13 08:00