gpt4 book ai didi

用于检查 TFS 上是否存在工作区的 C# 代码

转载 作者:太空狗 更新时间:2023-10-30 01:04:47 24 4
gpt4 key购买 nike

我正在尝试创建一个自动化工具以从 TFS 获取最新代码。我需要检查系统上是否存在同名的工作空间。如果存在,则获取工作区实例。否则创建工作区和映射。

我发现 Microsoft.TeamFoundation.VersionControl.ClientVersionControlServer 有方法 Workspace GetWorkspace(string workspaceName, string workspaceOwner); 来获取现有工作区。但是如果系统上不存在工作区,这将抛出异常。

所以请给我一个检查工作空间和映射是否存在的代码。

目前我有以下代码,我知道它是不正确的方式

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;

}

最佳答案

如果您不想依赖捕获异常,您可以调用 QueryWorkspaces

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

此代码将查询此代码运行的计算机上用户的工作区。如果集合为空,它将在工作区中返回 null 或返回列表中的单个项目。在 QueryWorkspaces 返回更多项目(似乎不可能)的情况下,它仍然会抛出,但对我来说这似乎没问题。

现在您可以检查映射

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

关于用于检查 TFS 上是否存在工作区的 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com