C# 使用TeamFoundationClient TFS2008和VS2010以编程方式合并
我有VS2010的附加版本VS(可能在未来的VSIX中)。 我想做任何单个文件(sql文件)的分支,然后以编程方式进行合并 我看到了几种选择: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
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();