我们正在尝试在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:我已经读过,签入政策仅用于检查文档,但是这个工作流程是我们需要的。