2012-09-28 58 views
6

Estoy escribiendo una utilidad para leer todos los defectos de un sistema de seguimiento de errores heredado, e importarlos a TFS (2008/2010). Estoy usando la API de TFS para crear nuevos artículos de trabajo, establecer sus campos y luego guardarlos. Sin embargo, no puedo modificar los campos "Creado por" y "Fecha de creación", ya que estos son establecidos por el sistema. (Y hay otros campos también, lo cual me gustaría ser capaz de forzar valores para, como configurar el remitente que ser alguien que no es un usuario válido TFS)Forzar forzosamente valores de campo para un artículo de trabajo TFS

// these fail with "The value for the field 'Created By' cannot be changed." 
defectWorkItem.Fields["Created By"].Value = defect.Submitter; 
defectWorkItem.Fields["Created Date"].Value = defect.SubmitDate; 

Obviamente si no puede establecer estas campos, terminaré con todos los errores heredados que parecen creados en la misma fecha por la misma persona.

¿Hay alguna forma de que pueda usar la API pero forzar cambios a campos que normalmente están protegidos? He buscado acceder a las tablas de la base de datos TFS directamente, pero el esquema parece complicado y creo que sería bastante arriesgado intentar modificar los datos allí.

Respuesta

7

se le permite definir los campos Created Date y Created By si usted es una cuenta de servicio y se enciende la derivación característica de reglas.

Puede elegir omitir las reglas cuando crea una instancia de la clase WorkItemStore utilizando esta marca: WorkItemStoreFlags.BypassRules.

Tenga en cuenta que puede establecer estos campos solo para la primera revisión de los elementos de trabajo.

+0

gracias, esto suena exactamente lo que Necesito. Lo probaré y lo marcaré como respuesta si puedo hacerlo funcionar –

+0

¿Sabes si esta bandera es nueva con TFS 2012? No está en la versión anterior de la biblioteca. –

+0

He estado probando esto y es un poco extraño. Primero, no puede establecer estos campos en el primer guardado, solo guarda subsecuentes. En segundo lugar, no me permitirá cambiar System.CreatedBy, aunque puedo cambiar System.CreatedDate y Microsoft.VSTS.Common.ActivatedDate con esta técnica. –

1

Sólo una sugerencia: Insertar este texto al comienzo de la descripción de un elemento de trabajo al realizar la migración:

  • migrar desde Sistema XXX
  • original fecha de creación: 2012 1/1
  • original creada por: John Doe
+0

sí, eso es lo que haré si no puedo modificar las fechas creadas, pero significará que las personas no pueden usar las consultas a las que están acostumbrados desde el viejo sistema –

Cuestiones relacionadas