Sri*_*nth 4 c# tfs visual-studio-2010 tfs2010
我正在尝试创建一个自动化工具来从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;
}
Run Code Online (Sandbox Code Playgroud)
如果您不想依赖捕获异常,可以调用QueryWorkspaces
workspace = versionControl.QueryWorkspaces(
workspaceName,
versionControl.AuthorizedUser,
Environment.MachineName).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
此代码将在此代码运行的计算机上查询用户的工作空间.如果集合为空,它将在工作空间中返回null,否则它将返回列表中的单个项目.在QueryWorkspaces返回更多项目(似乎不可能)的情况下,它仍会抛出,但这对我来说似乎没问题.
现在您可以检查映射
if (workspace !=null)
{
foreach(var folder in workspace.Folders)
{
if (!folder.IsCloaked && folder.LocalItem != "some expected path")
{
// mapping invalid, throw/log?
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |