如何以编程方式操作挂起的更改窗口?

时间:2013-02-13 12:03:05

标签: tfs visual-studio-2012 visual-studio-sdk tfs-sdk

我正在创建TFS合并向导的克隆以添加新功能。

我已经与workspakce.Merge api合并了。现在我需要一种以编程方式显示Pending Changes - Conflict Window的方法。

我已经有一个来自PendingChangesExt的IVsWindowFrame,如:

   GetStatus status = sourceExplorer.Workspace.Merge(sourcePath, targetPath, versionFrom, versionTo, LockLevel.None, RecursionType.Full, MergeOptionsEx.None);

   IVsWindowFrame frame = pendingChanges.VsWindowFrame;
   frame.Show(); 

当我调用show()时,Pending Changes窗口会刷新结帐文件,但我需要选择此屏幕中的最后一个按钮(Conflicts),以显示Merge的冲突。

我如何通过IVsWindowFrame以编程方式点击此屏幕上的冲突按钮?

1 个答案:

答案 0 :(得分:1)

我在Chad Boles的帮助下找到了解决方案:

public void refreshPendingChanges()
{
  Object customIn = null;
  Object customOut = null;

  //Show TfsPendingChanges
  m_applicationObject.ExecuteCommand("View.TfsPendingChanges", "");

  //Refresh
  m_applicationObject.Commands.Raise("{FFE1131C-8EA1-4D05-9728-34AD4611BDA9}", 4808, ref customIn, ref customOut);

  //Activate Source Explorer
  m_applicationObject.DTE.Windows.Item("{99B8FA2F-AB90-4F57-9C32-949F146F1914}").Activate(); //I get this GUID recording a Macro.
  //Show Conflicts
  m_applicationObject.DTE.ExecuteCommand("File.TfsResumeConflictResolution"); 
}

感谢Chad Boles,我说过File.TfsResumeConflictResolution!