是否可以为TFS2013的MSSCCI提供程序创建一个插件来捕获Evaluate()事件并将签入时的PolicyFailure []返回给TFS?

时间:2015-01-08 12:16:50

标签: c# visual-studio tfs msscci

我们开发了一个自定义签到策略插件,可以将签入事件捕获到客户端上的TFS 2013。这用于评估某些工作流状态并为签入生成有意义的注释。对于这些任务,检查用户为签入选择/关联的工作项的有效性,并使用工作项中的值来生成注释。这在Visual Studio领域非常有效。直到最近,TFS的所有签到都是通过Visual Studio 2013完成的。一个新团队加入了我们,他们使用XPA Magic。标准的XPA编辑器似乎利用TFS 2013的32位MSSCCI提供程序来执行TFS的检查和签入。 通过XPA编辑器检入代码时,使用以下对话框允许用户选择/关联他的工作项并添加注释。

enter image description here

不幸的是,当通过此对话框登记时,该功能不再起作用。我调试了插件项目,当通过此路由检查OUT时,调用Evaluate()函数并公开Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesModelVS。但是,在检查IN时,不会调用Evaluate()函数。

在概念上是否可以捕获签入事件并获得与通过Visual Studio签入时相同(或类似)的结果?

客户端计算机在Windows 7上运行的Visual Studio Premium 2013连接到TFS 2013.Update3应用程序服务器。

-

-

嘿爱德华,

我不完全确定我正确地解释了你的回复,但是这里是: - )

我们的想法是在办理登机手续时建立一个评论,其中包含相关工作项目的详细信息(如WI编号,描述和其他一些自定义信息)。 在检入文件后,创建的更改集的注释将包含一些有用的信息。 注释(字符串)在签入时生成,然后在以下属性中设置: PendingCheckin.PendingChanges.Comment = newCheckinComment;

Full NameSpace: {Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesModelVS} .PendingCheckin.PendingChanges.Comment

因此,我们需要在办理登机手续时在此处发表评论。在办理登机手续时,我们也确定至少有一个WI可以从中提取数据,因为这是强制执行的。

在调试中,我发现每次执行这些操作时都会触发以下事件:

  • 在团队资源管理器中刷新。 (PendingCheckin.Policies.EvaluationState = Unevaluated)
  • 在Windows资源管理器中通过上下文菜单“Team Foundation Server”在Checkout上。 (PendingCheckin.Policies.EvaluationState =未评估)

  • 使用Visual Studio进行签到(PendingCheckin.Policies.EvaluationState = 已评估

看到我们只对签到操作感兴趣,代码只响应:PendingCheckin.Policies.EvaluationState = Evaluated

    public override PolicyFailure[] Evaluate()
    {
        PolicyFailure[] failures = null;

        if (PendingCheckin.Policies.EvaluationState == PolicyEvaluationState.Evaluated)
        {
     InitConfiguration();
            failures = CheckWorkitemStatus();
            if (Util.ArePolicyFailuresOk(failures))
                failures = ComposeCheckinComment();
            if (Util.ArePolicyFailuresOk(failures)) //The setting of the comment -> PendingCheckin.PendingChanges.Comment = newCheckinComment , happen in this function.
                failures = CheckFilesToCheckin();
        }
        return failures;
    }

因为您可以看到问题出现,在Windows资源管理器中通过上下文菜单“Team Foundation Server”签入,从未到达Evaluate()函数,但是从同一个上下文菜单中签出... 希望它有意义!

0 个答案:

没有答案