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

标签 visual-studio tfs visual-studio-2012 vsx visual-studio-extensions

我正在编写一个将与 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/

相关文章:

visual-studio - 您的应用程序已进入中断状态,但没有代码可显示,因为所有线程都在执行外部代码(通常是系统或框架代码)

azure - Docker 推送给出 "blob upload unknown"

tfs - 向工作项类型添加新的初始状态 Bug - Web Access 任务板显示错误 TF400917

visual-studio-2012 - 如何在 Visual Studio 2012 的 JSLint 扩展中配置规则

c# - “Code First From Database”模板未显示在 Visual Studio 实体数据模型向导中

c# - 编辑和调试时 Visual Studio 2015 变慢

c++ - Visual Studio 包含文件调用错误 - C++

visual-studio - 将解决方案文件更改到不同的文件夹

tfs - 检测 Team Foundation Server 2010 中的团队项目集合

visual-studio-2010 - Visual Studio更改日期和时间格式