gpt4 book ai didi

visual-studio - 在 vs2012 扩展中调用源代码控制比较操作

转载 作者:行者123 更新时间:2023-12-01 23:33:48 26 4
gpt4 key购买 nike

我正在编写一个将与 TFS 2010 通信的 vs2012 扩展(尽管我更希望它也可以与 tfs2012 一起工作)。

我需要从扩展中对文件调用比较操作。

我想使用创新时在visual studio中配置的默认比较工具(因为用户可以配置不同的比较工具)。

我有文件的位置,我希望能够调用以下内容:

  • 打开默认比较。
  • 打开与最新版本的比较
  • 打开与工作区版本的比较

最佳答案

使用IVsDifferenceService从您的 VSPackage 调用 Visual Studio diff 工具:

private void Compare(string leftFile, string rightFile)
{
var diffService = (IVsDifferenceService)GetService(typeof(SVsDifferenceService));
if (diffService != null)
{
ErrorHandler.ThrowOnFailure(
diffService.OpenComparisonWindow(leftFile, rightFile).Show()
);
}
}

要测试它,您需要设置工作区并下载要比较的文件:

    // TODO: add some error handling
var tpc = new TfsTeamProjectCollection(new Uri("http://tfs.company.com:8080/tfs"));
var vcs = tpc.GetService<VersionControlServer>();
var workspace = vcs.GetWorkspace(Environment.MachineName, vcs.AuthorizedUser);

string localItem = @"C:\workspace\project\somefile.cs";

var folder = workspace.GetWorkingFolderForLocalItem(localItem);
var item = vcs.GetItem(folder.ServerItem, VersionSpec.Latest);
var latestItem = string.Format("{0}~{1}", localItem, item.ChangesetId);
item.DownloadFile(latestItem);

Compare(localItem, latestItem);

引用资料:

using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

关于visual-studio - 在 vs2012 扩展中调用源代码控制比较操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com