Connexion à un espace de travail Team Foundation Server à l'aide GetWorkspace
-
13-09-2019 - |
Question
Je suis nouveau à Team Foundation Server et je suis en train de se connecter à un projet en utilisant c # programme. Je le bloc de code suivant ...
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);
Quand j'exécute le code que je reçois l'erreur suivante ...
TF14061: The workspace Test;vercuskis does not exist.
Le projet « Test » est hors de la racine et est visibile de VS 2008 Team Explorer, j'ai accès à la sécurité et je l'utiliser pour vérifier et sortir le code très bien
Je ne sais pas si je le projet « Test » référencé correctement dans mon code. Je cherche un exemple de comment référencer un nom de projet hors de la racine TFS.
Merci,
La solution
Le problème est que « Test » dans votre code fait référence ci-dessus à l'espace de travail TFS, pas le projet dans TFS. TFS utilise une idée appelée espaces de travail que vous associez des répertoires et des projets.
L'espace de travail que vous utilisez est affiché dans l'explorateur de contrôle de source windwo vers le haut. Il dit: « Espace de travail: »., Puis le nom de l'espace de travail que vous utilisez
Voici une bonne ressource en ce qui concerne les espaces de travail: http://www.woodwardweb.com/teamprise/ 000333.html
Vous aurez alors besoin d'obtenir probablement quelques applications de dossiers de TFS ainsi. Le TFS documentaiton est rare, et une grande partie du travail que je l'ai fait avec elle nécessite quelques essais et erreurs pour comprendre comment fonctionne TFS, et comment l'API est différent d'utiliser l'explorateur de contrôle de code source en studio visuel.
Autres conseils
Comme Brian a dit, vous êtes confus au sujet de ce qu'est un espace de travail est. Son lien est un bon: http://www.woodwardweb.com/teamprise/000333.html
Si vous voulez juste des informations d'historique interroger sur le système de contrôle de version et non checkin / Caisse des fichiers, vous ne pas besoin d'un espace de travail du tout. Il suffit d'utiliser l'objet VersionControlServer.
- QueryItems = "tf dir"
- QueryItemsExtended = "Propriétés" tf
- QueryPendingChanges = "état tf"
- QueryHistory = "histoire tf" - méfiez-vous, l'énumération provoque allers-retours de serveurs supplémentaires via yield return
- etc etc
J'ai eu le même problème, je crois que ce fut parce que le WorkSpace de VS a été mis en correspondance avec plusieurs projets. J'ai donc créé un nouveau WorkSpace avec un seul projet cartographié.
Ma solution travaillé:
Ouvrez le CMD de VS
Exécutez le soufflet ligne: tf workspace /new /s:http://tfs2010.server.com:8080/tfs
Comme ceci:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf workspace /new /s:http://tfs2010.server.com:8080/tfs
Vous êtes invité à installer la nouvelle WorkSpace:
Nom: le nom de l'espace de travail que vous aimez (pas d'espace ou de caractère spécial)
dossier de contrôle Source: $/FolderName
Dossier local: C:\FolderName
Utilisez le nom de WorkSpace inputed en vous écrivez du code
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);