Por lo tanto, estoy intentando recuperar los archivos de un espacio de trabajo en TFS. Desafortunadamente, cada intento que he hecho para hacer esto da como resultado una aplicación estancada. A partir de ahora, este es el código:Intentar recuperar archivos de la aplicación de espacios de trabajo de TFS
public void GetWorkspaceFiles(string workspaceName)
{
VersionControlServer sourceControl = (VersionControlServer)TfsServer.GetService(typeof(VersionControlServer));
var items = sourceControl.GetItems(workspaceName, VersionSpec.Latest, RecursionType.Full)
.Items
.Where(x => x.ItemType == ItemType.File)
.ToList();
for (int x = 0; x < items.Count; x++)
items[x].DownloadFile();
Lo que pasa es que cada vez que ejecute esta aplicación (en varias máquinas) que se ahogue en items[x].DownloadFile()
. Todos los archivos en TFS no están bloqueados, todo está bien. Intentar utilizar el método Workspace.Get()
da como resultado lo mismo.
Si presiono pausa, x será un valor específico, pero no puedo acceder a la colección de elementos, ya que cuando aparece "No puedo evaluar la expresión porque el hilo actual está en suspensión, espere o se une" . Cuando evalúo la pila de llamadas obtengo:
[In a sleep, wait, or join]
[External Code]
GetWorkspaceFiles(string workspaceName) Line 55
No sé qué hacer más. Cada vez que pause la aplicación, x
siempre tiene el mismo valor (sin embargo, el valor que se detiene es diferente para cada aplicación).
¿Alguien tiene alguna idea?
Editar: Después de añadir lógica de diagnóstico (basado en el enlace en la respuesta de subvención) estoy aún más confundido que nunca.
El espacio de trabajo que paso a este método es $/QA/Automated Test Scripts/Regression or System Test Scripts/RDE or Condo
(verificado a través del depurador).
Sin embargo, cuando miro a los registros de TFS, que parece ser la descarga del archivo de código que estoy corriendo, ya que dice:
02/10/2011 12:26:58 (pid 5808, tid 5968, 42180 ms) Recording OperationStatus.Getting for $/QA/Automated Test Scripts/QA Tools/Test Manager/Test Polling Server/fmMain.cs
Justo después de que la entrada es:
02/10/2011 12:26:58 (pid 5808, tid 5968, 42180 ms) DownloadFiles: 18 ms
02/10/2011 12:26:58 (pid 5808, tid 5968, 42181 ms) Acknowledgements: 0 ms
Después de eso, no hay más actualizaciones en el archivo de registro y mi aplicación está detenida. De lo que estoy confundido acerca es
1) ¿Por qué esta tratando de sacar el código de aplicación de TFS cuando yo estoy especificando un espacio de trabajo completamente diferente TFS
2) ¿Por qué es este estancamiento después de intentar recuperar el archivo? Es posible que sea porque fmMain.cs
está abierto en Visual Studio, pero aún así debería sobresalir y no colgarse. Puedo obtener lo último mientras el archivo está abierto a través de Visual Studio normalmente.
Edit2:
Ok, así que estaba leyendo a través de MSDN y me di cuenta de que el nombre del espacio de trabajo puede ser la ruta de acceso local a los archivos. Así que modifiqué lo que pasé como el parámetro workspaceName
al directorio local de los archivos. Todavía tengo puestos, pero el archivo de registro es mucho menos claro sobre por qué. He cargado el archivo tf.log here (evidentemente, he cambiado la información de propiedad, como nombres de servidores y proyectos, pero todo lo demás está intacto). Después de esa última entrada de registro, no se escriben más datos en el registro.
¿Ha utilizado wireshark para ver los datos yendo y viniendo? Creo que es principalmente legible por humanos. –
Nunca escuché hablar de eso antes. Lo comprobaré. – KallDrexx