Collegamento a un'area di lavoro di Team Foundation Server utilizzando GetWorkspace
-
13-09-2019 - |
Domanda
Sono nuovo di Team Foundation Server e sto cercando di connettersi a un progetto di programmazione utilizzando C #. Ho il seguente blocco di codice ...
string serverName = "http://tfs01:8080";
TeamFoundationServer tfs = new TeamFoundationServer(serverName);
VersionControlServer version = (VersionControlServer)tfs.GetService(typeof (VersionControlServer));
Workspace workspace = version.GetWorkspace("Test", version.AuthenticatedUser);
MessageBox.Show(workspace.Name);
Quando eseguo il codice ricevo il seguente errore ...
TF14061: The workspace Test;vercuskis does not exist.
Il progetto "Test" è fuori della radice ed è visibile da VS 2008 Team Explorer, io ho accesso di sicurezza ad esso e lo uso per il check-in e fuori il codice bene
Non sono sicuro se ho il progetto "Test" si fa riferimento in modo corretto all'interno del mio codice. Sto cercando un esempio di come fare riferimento a un nome di progetto al largo della radice TFS.
Grazie,
Soluzione
Il problema è che "Test" nel codice sopra si riferisce allo spazio di lavoro TFS, non il progetto di TFS. TFS utilizza un'idea chiamata aree di lavoro che decidi di mappare le directory ei progetti.
L'area di lavoro che si sta utilizzando è mostrato in Esplora controllo del codice sorgente windwo verso l'alto. Dice: 'Area di lavoro:'. E poi il nome del lavoro che si sta utilizzando
Ecco una buona risorsa per quanto riguarda le aree di lavoro: http://www.woodwardweb.com/teamprise/ 000333.html
Sarà quindi necessario probabilmente per ottenere alcune mappature delle cartelle da TFS pure. Il documentaiton TFS è scarsa, e gran parte del lavoro che ho fatto con esso richiede alcuni tentativi ed errori per capire come funziona TFS, e come l'API è diverso dall'utilizzo di esploratore controllo del codice sorgente in Visual Studio.
Altri suggerimenti
Come Brian ha detto, siete confusi su ciò che un lavoro è. Il suo legame è una buona: http://www.woodwardweb.com/teamprise/000333.html
Se si desidera solo per richiedere informazioni storiche sul sistema di controllo di versione e non checkin / checkout qualsiasi file, non hai bisogno di uno spazio di lavoro a tutti. Basta usare l'oggetto VersionControlServer.
- QueryItems = "tf dir"
- QueryItemsExtended = "proprietà TF"
- QueryPendingChanges = "status tf"
- QueryHistory = "storia tf" - attenzione, l'enumerazione causa di andata e ritorno di server aggiuntivi tramite dei rendimenti
- ecc ecc
Ho avuto lo stesso problema, credo che sia stato perché il WorkSpace da VS è stato mappato con più progetti. Così ho creato un nuovo spazio di lavoro con un solo progetto mappata.
La mia soluzione lavorato:
Aprire il CMD da VS
Eseguire la riga sotto: tf workspace /new /s:http://tfs2010.server.com:8080/tfs
In questo modo:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf workspace /new /s:http://tfs2010.server.com:8080/tfs
Verrà richiesto di impostare la nuova area di lavoro:
Nome: il nome dell'area di lavoro che ti piace (nessuno spazio o carattere speciale)
cartella di controllo del codice sorgente: $/FolderName
Cartella locale: C:\FolderName
Utilizza il WorkSpace Nome inputed sei codice
this._server = config.GetAttribute("server");
**this._workspace = config.GetAttribute("workspace");**
this._user = config.GetAttribute("user");
this._password = config.GetAttribute("psw");
TeamFoundationServer tfs = new TeamFoundationServer(this._server, new System.Net.NetworkCredential(this._user, this._password));
tfs.Authenticate();
VersionControlServer versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
Workspace ws = versionControl.GetWorkspace(this._workspace, this._user);