Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用TeamFoundationClient TFS2008和VS2010以编程方式合并_C#_Tfs_Merge - Fatal编程技术网

C# 使用TeamFoundationClient TFS2008和VS2010以编程方式合并

C# 使用TeamFoundationClient TFS2008和VS2010以编程方式合并,c#,tfs,merge,C#,Tfs,Merge,我有VS2010的附加版本VS(可能在未来的VSIX中)。 我想做任何单个文件(sql文件)的分支,然后以编程方式进行合并 我看到了几种选择: GetStatus status = workspace.Merge 合并可以显示合并的对话框模式(我想是diffmerge.exe)和显示结果(解决冲突)?注意:在我的例子中,现在,我想要显示合并工具 有tf命令(命令行,而不是C## tf差异[差异]项目规范[/version:versionspec] tf合并[/recursive][/fo

我有VS2010的附加版本VS(可能在未来的VSIX中)。 我想做任何单个文件(sql文件)的分支,然后以编程方式进行合并

我看到了几种选择:

GetStatus status = workspace.Merge

合并可以显示合并的对话框模式(我想是diffmerge.exe)和显示结果(解决冲突)?注意:在我的例子中,现在,我想要显示合并工具

有tf命令(命令行,而不是C##

tf差异[差异]项目规范[/version:versionspec]

tf合并[/recursive][/force][/candidate][/discard] [/version:versionspec][/lock:none |签入|签出][/preview] [无根据的][总结的][无根据的][保守的] [/format:(简短|详细)][/noprompt][/login:username[密码]] 源目的地

tf解析[itemspec]

[/auto:(自动合并|带走他们的|保留你的|

覆盖本地|删除冲突

|保留您的姓名(他们的)]

[/preview][(/overridetype:overridetype |/converttotype:converttype] [/recursive]

[/newname:path][/noprompt]

[/login:username,[密码]]

有关合并文件的任何建议,请选择:

1) 显示合并对话框(diffmerge)


2) 自动,不显示用于合并(diffmerge或其他?)和解决冲突的对话框。

从visual studio安装目录C:\Program Files(x86)\Microsoft visual studio 12.0\Common7\IDE中的应用程序exe文件复制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();
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();