使用ReSharper清理代码的TFS签入策略

时间:2014-05-07 21:49:36

标签: tfs resharper checkin

我们正在尝试在TFS Checkin上运行ReSharper的清理代码。理想情况下,当您右键单击解决方案/项目并选择源代码管理>签入"包含的更改"中的所有文件应该运行清理代码。我已经在某种程度上使用自定义签入策略,如果您选择单个文件进行检入,但是当您选择解决方案或项目时,它会尝试在整个解决方案/项目上运行清理代码而不是只是在TFS待定更改中选择的文件"包含更改"。

我用R#8.2运行VS 2013。我的政策评估代码:

public override PolicyFailure[] Evaluate()
{
  if (PendingCheckin.Policies.EvaluationState == PolicyEvaluationState.Unevaluated)
  {
    DTE2 dte = PendingCheckin.GetService(typeof (DTE)) as DTE2;
    foreach (EnvDTE.Document doc in dte.Documents)
    {
      doc.DTE.ExecuteCommand("ReSharper_SilentCleanupCode");
    }
  }
  return new PolicyFailure[0];
}   

我不认为这只适用于ReSharper,执行" Edit.FormatDocument"这里很可能也会在所有文件上运行。

有没有办法只在1个文件/文件上运行ExecuteCommand?

好像是

PendingCheckin.GetService(typeof (DTE))

仅获取在Visual Studio编辑器中打开的文件,而不是"包含更改"中的所有文件。名单。我可以通过

获取PendingChange列表
PendingCheckin.PendingChanges.CheckedPendingChanges

但我不知道如何在PendingChange上执行命令。这里的建议会有所帮助

PS:我已经读过,签入政策仅用于检查文档,但是这个工作流程是我们需要的。

0 个答案:

没有答案
相关问题