c# - team - API de TFS: cómo recuperar elementos de trabajo de un proyecto de equipo específico
que significa tfs (2)
Probablemente sea más eficiente utilizar una consulta para encontrar los elementos de trabajo que le interesan. Puede agregar un proyecto Where = ''@Project'' a la consulta para limitar el alcance a ese proyecto. Al llamar primero a BeginQuery y luego a EndQuery, obtendrá una colección de elementos de trabajo solo para los artículos que estaba buscando.
La forma más fácil de obtener la consulta wql requerida es crear una consulta en Team Explorer, luego use file-> save as (en modo de edición) para guardarla en el archivo. Abra ese archivo en el Bloc de notas para copiar la consulta de allí.
Alternativamente, puede usar el método WorkItemStore.Query directamente para lograr lo mismo.
TfsTeamProjectCollection
consultar un único proyecto de equipo en el TfsTeamProjectCollection
principal que contiene 194 proyectos de equipo en total. Sé exactamente cómo obtener un WorkItem
por Id desde un WorkItemStore
. El hecho es que al hacer esto, la API busca en TODOS los proyectos en la colección y la consulta toma alrededor de un minuto. Esto es demasiado lento, debe haber una manera de consultar los elementos de trabajo directamente desde un único proyecto de equipo? Aquí está el código que tengo:
private Uri collectionUri;
private TfsTeamProjectCollection projectCollection;
private WorkItemStore workItemStore;
public Project GetTeamProject()
{
projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri);
workItemStore = projectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFS_PROJECT_KEY];
return teamProject;
}
Ahora que tengo el proyecto de equipo que me interesa, ¿cómo puedo consultar elementos de trabajo por ID o simplemente obtener todos los elementos de trabajo en este proyecto?
Puede probar algo como esto para obtener todos los teamProject
dentro de teamProject
:
WorkItemCollection workItemCollection = workItemStore.Query(
" SELECT [System.Id], [System.WorkItemType],"+
" [System.State], [System.AssignedTo], [System.Title] "+
" FROM WorkItems " +
" WHERE [System.TeamProject] = ''" + teamProject.Name +
"'' ORDER BY [System.WorkItemType], [System.Id]");
Y esto para obtener una ID de WorkItem específica:
WorkItem workItem = workItemStore.GetWorkItem(555);