Quindi sto tentando di recuperare i file da un'area di lavoro in TFS. Sfortunatamente, ogni tentativo che ho fatto di fare questo si traduce in un'applicazione bloccata. A partire da ora, questo è il codice:Tentativo di recuperare i file dall'applicazione TPS dell'area di lavoro 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();
Quello che succede è che ogni volta che faccio funzionare questa applicazione (su più macchine) si bancarelle su items[x].DownloadFile()
. Tutti i file in TFS non sono bloccati, tutto va bene. Il tentativo di utilizzare il metodo Workspace.Get()
ha come risultato la stessa cosa.
Se si preme pausa, x sarà un valore specifico, ma non riesco ad accedere alla raccolta di elementi, come quando si ottiene "Impossibile valutare l'espressione perché il thread corrente è in sospeso, in attesa o in join" . Quando valuto lo stack di chiamate ottengo:
[In a sleep, wait, or join]
[External Code]
GetWorkspaceFiles(string workspaceName) Line 55
Sono in perdita su cosa fare oltre. Ogni volta che sospendo l'applicazione, x
ha sempre lo stesso valore (il valore su cui si blocca è diverso per ogni esecuzione di un'applicazione).
Qualcuno ha qualche idea?
Edit: Dopo aver aggiunto la logica diagnostica (sulla base del link nella risposta di Grant) sono ancora più confuso che mai.
Lo spazio di lavoro che sto passando a questo metodo è $/QA/Automated Test Scripts/Regression or System Test Scripts/RDE or Condo
(verificato tramite il debugger).
Tuttavia, quando guardo i log TFS, sembra essere il download di codice che io sono in esecuzione, come si 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
Subito dopo intervento è:
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
Dopodiché non ci sono ulteriori aggiornamenti al file di log e la mia applicazione è in stallo. Quello che mi sono confuso circa è
1) Perché questa cercando di tirare il codice dell'applicazione da TFS quando sto specificando una completamente diversa TFS lavoro
2) Perché è questo stallo dopo aver tentato di recuperare il file? È possibile che sia perché fmMain.cs
è aperto in Visual Studio, ma dovrebbe comunque escludere e non rimanere bloccato. Sono in grado di ottenere le ultime notizie mentre il file è aperto normalmente tramite Visual Studio.
Edit2:
Ok, quindi stavo leggendo attraverso MSDN e ho notato che il nome dell'area di lavoro può essere il percorso locale per i file. Così ho modificato quello che ho passato come parametro workspaceName
nella directory locale dei file. Ricevo ancora bancarelle, ma il file di registro è molto meno chiaro sul perché. Ho caricato il file tf.log here (ovviamente ho cambiato le informazioni proprietarie, come i nomi dei server e dei progetti, ma tutto il resto non è stato modificato). Dopo l'ultima voce del registro, non vengono scritti ulteriori dati nel registro.
Hai usato wireshark per esaminare i dati che vanno avanti e indietro? Penso che sia per lo più leggibile. –
Mai sentito prima. Lo guarderò. – KallDrexx