10

TFSに特定のアーティファクトがあります。たとえば、変更セット「123」には、URI 「vstfs:/// VersionControl /Changeset/123」があります。リンクhttp:// tfs:8080 / tfs / web / UI / Pages / Scc / ViewChangeset.aspx?changeset = 123は、Webブラウザを使用してチェンジセットの詳細ビューを開くことに気付きました。

私がやりたいのは、ビジュアルスタジオ内のチェンジセット詳細ビューを開くことです。これを埋め込んでいる場所は、ビルドサマリー内のカスタムセクションです。このカスタムセクションをVisualStudioプラグインとして実装しました。これが写真です:

ここに画像の説明を入力してください

「リリースビルド」セクションはカスタムメイドであり、そのようなビルドがリリースされると、すべての人に送信される電子メールに関する情報を提供します。

このセクション内のチェンジセット627は、自動的にリンクに変換されたボタンコントロールです。ボタンの後ろにある「クリック」ハンドラーが機能します。現在、コードは次のようになっています。

...
string link = buildDetailView.TeamProjectCollection.Uri.AbsoluteUri.Substring(0, buildDetailView.TeamProjectCollection.Uri.AbsoluteUri.LastIndexOf('/'));
link += "/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=";
link += ((Button)sender).Content;

Process.Start(new ProcessStartInfo(link));
e.Handled = true;
...

このコードは新しいブラウザタブを開き、正しいページを表示します。ただし、VisualStudio内でチェンジセットの詳細を開きたいのですが。「関連するチェンジセット」セクションの下部にあるボタンと同じように。「チェンジセット627」リンクをクリックすると、VisualStudio内でそのチェンジセットが開きます。

編集1

私がそれの写真を投稿するならば、それは正確に望ましい結果が何であるかについて少し明確かもしれません。「チェンジセットの詳細」ウィンドウは、APIを使用して開きたいものです。

ここに画像の説明を入力してください

4

2 に答える 2

14

次のブログ投稿をご覧ください。

基本的に、次のアセンブリへの参照が必要です。

 Microsoft.TeamFoundation.Client
 Microsoft.TeamFoundation.VersionControl.Client
 Microsoft.TeamFoundation.VersionControl.Controls
 Microsoft.VisualStudio.TeamFoundation
 Microsoft.VisualStudio.TeamFoundation.Client
 Microsoft.VisualStudio.TeamFoundation.VersionControl

次に、を使用VersionControlExt.ViewChangesetDetails(int changesetId)して、アドインから特定の変更セットを表示できます。

VersionControlExt vce;
vce = _applicationObject.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt") as VersionControlExt;
vce.ViewChangesetDetails(changesetId);

これにより、特定のチェンジセットに関するすべての詳細をユーザーに表示するダイアログが表示されます。(これは、ユーザーが[変更セットの検索]ダイアログで[詳細...]を選択した場合に表示されるダイアログと同じです。)

于 2012-01-17T11:26:27.053 に答える
0

VS 2015では、ここから取得した次のコードを使用できます

public void ViewChangesetDetails(int changesetId)
{
        ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>();
        if (teamExplorer != null)
        {
            teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId);
        }
}
于 2017-05-23T06:27:59.887 に答える