C#、TFS、HasAdministerPermission 在我的 PC 上使用非我 TFS 凭据为假

C#, TFS, HasAdministerPermission is false on my PC with not-me TFS credentials

我正在编写一个 C# 应用程序,它将文件从 TFS 下载(使用 Microsoft.TeamFoundation)到工作区,操作文件,将它们签入并删除工作区。用户永远不需要知道文件暂时位于他们的 PC 上。

用户无权访问 TFC 的特定区域,但应用内置的网络凭据可以。

所以我得到了工作区,就像这样

this.workspace = this.GetWorkspace(workspaceName, credentials);
this.workspace.Map(this.ProjectPath, workspaceFolder);
this.workspace.Get();

GetWorkspace 在哪里

private Workspace GetWorkspace(string workSpaceName, ICredentials credentials)
 {    
 var tpc = new TfsTeamProjectCollection(new Uri(this.Url), credentials);

 var versionControl = tpc.GetService<VersionControlServer>();

 var ws = versionControl.TryGetWorkspace(this.WorkspaceFolder)
 ?? versionControl.CreateWorkspace(workSpaceName, versionControl.AuthorizedUser);

 return ws;
}

当我得到时,一切都会达到 workspace.Get TF204017:操作无法完成,因为用户(ReadyAPI Test Runner)对工作区 MyWorkspace;用户名没有一项或多项必需的权限(管理)。果然,当我单步执行并检查工作区变量的权限时,HasAdministerPermission 为假。

我的假设是凭据(测试运行者)没有权限访问我的本地文件夹 (EffectivePermissions = "Read")。

我试过制作工作区public;并尝试更改工作区所有者名称,但这些似乎不起作用。我什至尝试将父文件夹(创建和删除的工作区)与 "Test Runner" 凭据共享。

如何使我解析的凭据具有完整的读写和删除权限?

您可以在没有本地工作区的情况下从 TFS 下载文件。

你需要两件事: tfs 服务器名称和文件服务器名称

string tfsServerName ="yourServerName";
string fileServerName ="yourFileServerName";

现在连接到服务器:

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServerName));
tpc.EnsureAuthenticated();
VersionControlServer sourceControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));

现在是最后一行:

sourceControl.DownloadFile(fileServerName, "your local path with file name and extension" );

以上是基础知识。