Tenemos un proceso de compilación personalizado (sin utilizar MS Build) y durante ese proceso agrego una compilación "falsa" a la lista de compilaciones globales. La razón por la que estoy haciendo eso es para que pueda seleccionar la construcción para un elemento de trabajo determinado (que se encuentra en la compilación). Tenemos un campo personalizado, construcción incluida, que tiene como objetivo mostrar en qué construcción se ha corregido ese elemento de trabajo. Tengo problemas para averiguar cómo actualizar este campo mediante programación. La idea es que tendré una pequeña aplicación que haga esto a la que llamaré durante el proceso de compilación, encontrando todos los elementos de trabajo desde la última compilación, y luego actualizando el campo para esos elementos de trabajo. ¿Algunas ideas?Cómo actualizar un campo de TFS personalizado mediante programación
Respuesta
Algo como esto debería funcionar para usted:
public void UpdateTFSValue(string tfsServerUrl, string fieldToUpdate,
string valueToUpdateTo, int workItemID)
{
// Connect to the TFS Server
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(tfsUri));
// Connect to the store of work items.
_store = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
// Grab the work item we want to update
WorkItem workItem = _store.GetWorkItem(workItemId);
// Open it up for editing. (Sometimes PartialOpen() works too and takes less time.)
workItem.Open();
// Update the field.
workItem.Fields[fieldToUpdate] = valueToUpdateTo;
// Save your changes. If there is a constraint on the field and your value does not
// meet it then this save will fail. (Throw an exception.) I leave that to you to
// deal with as you see fit.
workItem.Save();
}
Un ejemplo de llamar a esto sería:
UpdateTFSValue("http://tfs2010dev:8080/tfs", "Integration Build", "Build Name", 1234);
La variable fieldToUpdate
debe ser el nombre del campo, no el refname (es decir, . Integración Construir, no Microsoft.VSTS.Build.IntegrationBuild)
Probablemente pueda salirse con la suya usando PartialOpen(), pero no estoy seguro.
Es probable que necesite agregar Microsoft.TeamFoundation.Client
a su proyecto. (Y tal vez Microsoft.TeamFoundation.Common
)
¡Gracias, esto es exactamente lo que estaba buscando! – Nick
+1 ¿Te preguntas por qué esta respuesta nunca fue votada? –
No estoy seguro si cambiaron algo o si todo el mundo se da cuenta de esto, pero debe hacer: workItem.Fields [fieldToUpdate] .Value en TFS 2012; de lo contrario, obtendrá un error sobre la colección de campo de solo lectura; –
Esto ha cambiado para TFS 2012, básicamente hay que añadir workItem.Fields [fieldToUpdate] .Value
versión actualizada de lo que escribió @Vaccano.
public void UpdateTFSValue(string tfsServerUrl, string fieldToUpdate,
string valueToUpdateTo, int workItemID)
{
// Connect to the TFS Server
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(tfsUri));
// Connect to the store of work items.
_store = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
// Grab the work item we want to update
WorkItem workItem = _store.GetWorkItem(workItemId);
// Open it up for editing. (Sometimes PartialOpen() works too and takes less time.)
workItem.Open();
// Update the field.
workItem.Fields[fieldToUpdate].Value = valueToUpdateTo;
// Save your changes. If there is a constraint on the field and your value does not
// meet it then this save will fail. (Throw an exception.) I leave that to you to
// deal with as you see fit.
workItem.Save();
}
- 1. ¿Cómo crear/actualizar mediante programación un archivo TAGS con emacs?
- 2. cómo actualizar el espacio de trabajo de eclipse mediante programación?
- 3. SharePoint: crear un campo de lista oculto mediante programación
- 4. Generar informes mediante programación utilizando la API TFS y SSRS
- 5. Acceso mediante programación a TFS 2010 desde fuera del dominio
- 6. ¿Cómo puedo rastrear un conjunto de cambios de TFS en múltiples ramas mediante programación?
- 7. Agregar evento personalizado mediante programación en el calendario de iPhone
- 8. establecer mediante programación el valor del campo de listitem SharePoint
- 9. Reiniciar mediante programación un servicio de Windows
- 10. Cómo reiniciar mediante programación?
- 11. Conexión a TFSPreview mediante programación
- 12. ¿Cómo puedo restablecer un NSSearchField de cacao mediante programación?
- 13. Cómo cargar archivo de configuración mediante programación
- 14. aumentar mediante programación un comando
- 15. crear mediante programación un UILabel
- 16. ¿Cómo restaurar un formulario mediante programación?
- 17. ¿Cómo añadir un NSTableView desplazable mediante programación
- 18. ¿Cómo finalizo/reinicié un UIGestureRecognizer mediante programación?
- 19. Cómo agregar un atributo mediante programación
- 20. ¿Cómo elimino un dominio DNS mediante programación?
- 21. Cómo desplazarse mediante programación un HorizontalScrollView
- 22. Cómo crear un contacto mediante programación
- 23. Cómo actualizar por lotes múltiples elementos de trabajo en TFS
- 24. ¿Cómo crear subdominios para IIS7 mediante programación?
- 25. ¿Cómo obtener el historial de carpetas completo de TFS mediante programación?
- 26. ¿Cómo actualizar un UILabel en Xcode mediante programación sin archivos XIB?
- 27. Cómo ejecutar NUnit mediante programación
- 28. ¿Cómo detener un servicio de Windows mediante programación?
- 29. TFS "Copiar" el valor de un campo a otro
- 30. Actualizar un nuevo campo al documento existente
¿Puede ser más específico acerca de lo global se basa lista de piezas. ¿Estás usando una plantilla de compilación personalizada (en Windows Workflow Foundation)? ¿Está agregando una variable o argumento en esa plantilla? – LWoodyiii
Lo siento, estoy usando la lista global en TFS. No estoy usando una plantilla de compilación, estamos usando un producto llamado Automated Build Studio para la construcción propiamente dicha. Solo iba a escribir una aplicación independiente para llamar desde ABS para esta funcionalidad. – Nick