c# visual-studio-2010 tfs tfs2010

Código C#para verificar si el espacio de trabajo existe en TFS



visual-studio-2010 tfs2010 (1)

Intento crear una herramienta de automatización para obtener el último código de TFS. Necesito comprobar si existe algún espacio de trabajo con el mismo nombre en el sistema. Si existe, obtenga la instancia del espacio de trabajo. De lo contrario, cree el espacio de trabajo y las asignaciones.

Descubrí que Microsoft.TeamFoundation.VersionControl.ClientVersionControlServer tiene el método Workspace GetWorkspace(string workspaceName, string workspaceOwner); para obtener espacio de trabajo existente. Pero esto arrojará una excepción si el espacio de trabajo no existe en el sistema.

Así que por favor, denme un código que verifique la existencia de espacios de trabajo y mapeos.

En la actualidad tengo el siguiente código que sé que no es la forma correcta

try { //**Expected** an exception as sometimes the workspace may not exist or Deleted manually. workspace = versionControl.GetWorkspace(workspaceName, versionControl.AuthorizedUser); versionControl.DeleteWorkspace(workspaceName, versionControl.AuthorizedUser); workspace = null; } catch (Exception e) { DialogResult res = MessageBox.Show("There are no workspace mapped. I am creating a new workspace mapped to your local folder named DevFolder.", "Error", MessageBoxButtons.YesNo); if (res == DialogResult.No) { return; } } if (workspace == null) { var teamProjects = new List<TeamProject>(versionControl.GetAllTeamProjects(false)); // if there are no team projects in this collection, skip it if (teamProjects.Count < 1) { MessageBox.Show("Please select a team project."); return; } // Create a temporary workspace2. workspace = versionControl.CreateWorkspace(workspaceName, versionControl.AuthorizedUser); // For this workspace, map a server folder to a local folder ReCreateWorkSpaceMappings(workspace); createdWorkspace = true; }


Si no quiere confiar en la captura de una excepción, puede llamar a QueryWorkspaces

workspace = versionControl.QueryWorkspaces( workspaceName, versionControl.AuthorizedUser, Environment.MachineName).SingleOrDefault();

Este código consultará el espacio de trabajo para un usuario en la computadora que este código ejecuta. Si la colección está vacía, devolverá nulo en el espacio de trabajo o devolverá el único elemento en la lista. En el caso de que QueryWorkspaces devuelva más elementos (parece que no es posible), seguirá lanzando, pero eso me parece bien.

Ahora puedes verificar las asignaciones

if (workspace !=null) { foreach(var folder in workspace.Folders) { if (!folder.IsCloaked && folder.LocalItem != "some expected path") { // mapping invalid, throw/log? } } }