3

TFS 2010 と通信する vs2012 拡張機能を作成しています (ただし、tfs2012 でも動作することをお勧めします)。

拡張子からファイルの比較操作を呼び出す必要があります。

イノベーションの瞬間にビジュアル スタジオで構成されている既定の比較ツールを使用したい (ユーザーが別の比較ツールを構成できるため)。

私はファイルの場所を持っており、次のものを呼び出すことができるようにしたい:

  • デフォルトの比較を開きます。
  • 最新バージョンとの比較を開く
  • ワークスペース バージョンとの比較を開く
4

1 に答える 1

4

VSPackageIVsDifferenceServiceから 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;
于 2012-11-15T01:42:31.813 に答える