[英]How to get list of all projects with versions in the azure DevOps server from WPF or Windows application
我想从 Windows/WPF 应用程序中列出并显示 Azure DeveOps 服务器中的所有项目文件。 更早我的应用程序从 TFS 服务器检索数据。 现在我们的存储库已更改,现在使用 Azure devops 服务器而不是 TFS。我正在寻找与 TFS 中使用的以下代码等效的代码。我想对 Azure DevOps 服务器执行相同的操作。
从 TFS 获取所有项目文件和对象的示例代码
Uri tfsUri;
string OutPutFolderDB, DirectoryNextTo, Path;
tfsUri = new Uri("http://" + serverURI + "/testProjectCollection");
var targettfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
Microsoft.TeamFoundation.Server.ICommonStructureService stuctureService =
targettfs.GetService<Microsoft.TeamFoundation.Server.ICommonStructureService>();
Microsoft.TeamFoundation.Server.ProjectInfo[] projects = stuctureService.ListAllProjects();
VersionControlServer vcs = targettfs.GetService<VersionControlServer>();
我想知道在 Azure devops 服务器中使用的类似上述代码。 我的存储库是 git。
我们建议您可以使用 REST API 列出电源 shell 脚本中的所有项目。
样本:
$connectionToken="{PAT}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$OrgUrl = "https://dev.azure.com/{Org name}/_apis/projects?api-version=6.0-preview.4"
$ListProject = (Invoke-RestMethod -Uri $OrgUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
$ListProjectCount = $ListProject.count
Write-Host $ListProjectCount
$ListProjectName= $ListProject.value.name
ForEach ($Name in $ListProjectName)
{
Write-Host $Name
}
我们也可以使用客户端API来列出项目,对应的代码在C#中:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("{org url}");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", {credentials});
HttpResponseMessage response = client.GetAsync("_apis/projects?$top=250&stateFilter=All&api-version=1.0").Result;
if (response.IsSuccessStatusCode)
{
responseString = response.Content.ReadAsStringAsync().Result.ToString();
}
else
{
//failed
}
}
// Convert responseString into a json Object
RootObj jsonObj = JsonConvert.DeserializeObject<RootObj>(responseString);
Console.WriteLine("Found " + jsonObj.Count + " projects");
//Do stuff
foreach (var obj in jsonObj.Value)
{
//foreach project...
}
更新1
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.0-preview.1
我们可以得到 repo ID,然后你可以使用下面的 API 列出 repo 文件:
GET https://dev.azure.com/{org name}/{project name}/_apis/git/repositories/{repo ID}/items?recursionLevel=Full&api-version=4.1
结果:
如果你想下载所有这些:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.