¿Cómo puedo abrir la vista de diálogo de detalles del conjunto de cambios de TFS con un complemento de Visual Studio?
-
29-10-2019 - |
Pregunta
Tengo un artefacto específico en TFS, digamos conjunto de cambios "123", que tiene el URI "vstfs: /// VersionControl / Changeset / 123" . Me di cuenta de que el enlace " http: / /tfs:8080/tfs/web/UI/Pages/Scc/ViewChangeset.aspx?changeset=123 " abrirá la vista detallada del conjunto de cambios utilizando el navegador web.
Lo que me gustaría hacer es abrir la vista detallada del conjunto de cambios dentro de Visual Studio. El lugar donde estoy incrustando esto es una sección personalizada dentro del resumen de compilación. Implementé esta sección personalizada como un complemento de VisualStudio. Aquí hay una imagen:
La sección "Versión de compilación" está hecha a medida y proporcionará información sobre un correo electrónico que se enviará a todos, una vez que se publique dicha compilación.
El conjunto de cambios 627 dentro de esta sección es un control de botón que se ha transformado automáticamente en un enlace. El "Click" -Handler detrás del botón funciona. El código actualmente tiene este aspecto:
...
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;
...
Este código abrirá una nueva pestaña del navegador y mostrará la página correcta. Sin embargo, me gustaría que abriera el detalle del conjunto de cambios dentro de Visual Studio. Al igual que lo hace el botón en la parte inferior de la sección "Conjuntos de cambios asociados". Al hacer clic en el enlace "Conjunto de cambios 627", se abrirá ese conjunto de cambios dentro de Visual Studio.
EDITAR 1
Puede ser un poco más claro cuál es exactamente el resultado deseado, si publico una imagen del mismo. La ventana "Detalles del conjunto de cambios" es lo que me gustaría abrir usando la API.
Solución
Eche un vistazo a las siguientes publicaciones del blog:
- Ed Hintz: Cómo escribir un complemento de control de versiones de Team Foundation para Visual Studio
- Brian Harry: trabajando en TFS SDK mejoras y Código de muestra TFSAddin.zip (el archivo ZIP también incluye un documento en la API)
Básicamente, necesita referencias a los siguientes ensamblados:
Microsoft.TeamFoundation.Client
Microsoft.TeamFoundation.VersionControl.Client
Microsoft.TeamFoundation.VersionControl.Controls
Microsoft.VisualStudio.TeamFoundation
Microsoft.VisualStudio.TeamFoundation.Client
Microsoft.VisualStudio.TeamFoundation.VersionControl
Luego, puede usar VersionControlExt.ViewChangesetDetails(int changesetId)
para mostrar un conjunto de cambios específico de su complemento:
VersionControlExt vce;
vce = _applicationObject.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt") as VersionControlExt;
vce.ViewChangesetDetails(changesetId);
Esto abre un cuadro de diálogo que muestra al usuario todos los detalles sobre un conjunto de cambios en particular. (Es el mismo cuadro de diálogo que aparece si el usuario selecciona "Detalles ..." en el cuadro de diálogo "Buscar conjuntos de cambios").
Otros consejos
En VS 2015 puede usar el siguiente código tomado de aquí
public void ViewChangesetDetails(int changesetId)
{
ITeamExplorer teamExplorer = this.GetService<ITeamExplorer>();
if (teamExplorer != null)
{
teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.ChangesetDetails), changesetId);
}
}