我使用单元测试项目VS 2012,也使用控制台应用程序项目VS 2012,使用TeamFoundationClient 11.0和TFS 2008。
我使用MergeContent(冲突,真),但没有显示UI (用于合并的对话框模式)。
我见过这样的提法:
无法以编程方式显示合并工具中内置的用于解决合并冲突的https://connect.microsoft.com/VisualStudio/feedback/details/783320/cannot-programatically-display-built-in-merge-tool-to-resolve-a-merge-conflict
Workspace.MergeContent() with useExternalMergeTool = true不使用VS 2012打开内置VS合并工具
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.workspace.mergecontent(v=vs.110).aspx
使用VS 2010和TFS 2010,而没有为执行合并操作配置任何用户工具,当我们用Workspace.MergeContent= useExternalMergeTool = true调用useExternalMergeTool()时,使用内置的VS合并工具。 使用VS 2012和TFS 2012,而没有配置用于执行合并操作的任何用户工具,当我们使用Workspace.MergeContent()调用useExternalMergeTool = true时,函数返回fals而不打开内置的VS合并工具。最后,与以前的版本不同,内置在merge工具中的VS 2012相当不错,但是现在没有办法通过编程打开它来解决合并冲突。这是VS 2010的功能回归。
对于合并内容的显示模式对话框,有什么建议或解决办法吗?
发布于 2017-11-26 09:56:07
从visual studio安装dir C:\Program (X86)\MicrosoftVisualStudio12.0\Common7\IDE复制App文件中的vsDiffMerge.exe
var mergetool = new ThirdPartyToolDefinition(".*",ToolOperations.Merge,"vsDiffMerge.exe","","/m %1 %2 %3 %4");
var toolcol= ThirdPartyToolDefinitionCollection.Instance.FindTool(".*",ToolOperations.Merge);
if (toolcol == null)
{
ThirdPartyToolDefinitionCollection.Instance.AddTool(mergetool);
ThirdPartyToolDefinitionCollection.Instance.PersistAllToRegistry();
}
var controlsAssembly = Assembly.GetAssembly(typeof(ControlAddItemsExclude));
var vcResolveCoinflictsDialogType = controlsAssembly.GetType("Microsoft.TeamFoundation.VersionControl.Controls.DialogResolveConflicts");
var ci = vcResolveCoinflictsDialogType.GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, new[] { typeof(Workspace), typeof(string[]), typeof(bool) }, null);
var resolveCoinflictsDialog = (Form)ci.Invoke(new object[] { workspace, null, true });
resolveCoinflictsDialog.ShowDialog(parent);
ThirdPartyToolDefinitionCollection.Instance.Remove(mergetool);
ThirdPartyToolDefinitionCollection.Instance.PersistAllToRegistry();https://stackoverflow.com/questions/27405155
复制相似问题