Ive ударил головой об этом всю неделю. Создание нового проекта команды с использованием REST api. Везде, где я смотрю, ответ один и тот же, и он всегда включает в себя использование командной строки и xml.Создание нового проекта команды с использованием REST api
Но почему?
На наглядных студии страниц в Интернете это можно найти:
https://www.visualstudio.com/en-us/integrate/api/tfs/projects
(В частности, глядя на части с надписью «Создать командный проект»)
Так почему же это, если оно наклоненная существует использоваться? Или я что-то не хватает?
Если кто-нибудь знает какие-либо примеры использования этого, я бы очень признателен.
Ive были с помощью Microsoft.TeamFoundation.WorkItemTracking.Client пространств имен и т.д ... и счастливо создания новых рабочих элементов в проекты
и Ive даже удалось использовать API рушить списки проектов тоже. с использованием кода из этого примера (прокрутите вниз страницы)
https://www.visualstudio.com/en-us/integrate/get-started/rest/basics
, но я не могу за жизнь мне опубликовать новый проект команды.
На данный момент я открыт для любых предложений, я создал учетную запись здесь только спросить (я люблю этот сайт) :(
В соответствии с просьбой, код:
static async Task<string> PostProjectAsync(HttpClient _client, string _apiUrl, string _apiVersion)
{
var responseBody = string.Empty;
HttpContent hc = new StringContent(@"
{
""name"": ""Testprojectfromconsole"",
""description"": ""Posted from console application using the tfs API""
}
");
//TODO: make a class that matches the json layout that the api is expecting
//then see if you have any better luck with that instead of this horrid horrid mess
ProjectPost newproj = new ProjectPost();
newproj.Name = @"Test Project -From console";
newproj.Description = @"Hopefully this has been posted from the console app, delete it later on if need be.";
newproj.Capabilities.VersionControl.SourceControlType = @"TFS"; //probably wrong
newproj.Capabilities.ProcessTemplate.TemplateTypeId = @"default"; //also probably wrong
string json = JsonConvert.SerializeObject(newproj);
try
{
using (HttpResponseMessage response = _client.PostAsync(_apiUrl + _apiVersion, hc).Result)
{
response.EnsureSuccessStatusCode();
responseBody = await response.Content.ReadAsStringAsync();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return responseBody;
}
В настоящее время Я передаю HttpContent под названием «hc» в postasync, но если я переключу его на объект json, postasync перестанет работать (потому что он хочет, чтобы httpcontent не был json)
до того, как этот метод вызван, клиент настроен вверх так:
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
//Set alternate credentials
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", ALTUSERNAME, ALTPASSWORD))));
Console.WriteLine("<--------------Getting projects from tfs!-------------->");
Console.WriteLine("<----------------Hold on to your butts!---------------->");
responseBody = await GetAsync(client, BASEURL + "projects", APIVERS);
Console.WriteLine(responseBody.ToString());
Console.WriteLine("<----------------Making a new project!----------------->");
Console.WriteLine("<----------------Hold on to your butts!---------------->");
responseBody = await PostProjectAsync(client, BASEURL + "projects", APIVERS);
Console.WriteLine(responseBody.ToString());
о, и URL таково:
static string PN1 = @"Test Project -From Web";
static string PN2 = @"Another Test Project -From Web";
static string COL = @"DefaultCollection";
static string BASEURL = "https://{0}.visualstudio.com/DefaultCollection/_apis/";
// Get the alternate credentials that you'll use to access the Visual Studio Online account.
static string ALTUSERNAME = "myusername";
static string ALTPASSWORD = "mypassword!";
//Your visual studio account name
static string ACCOUNT = "ourserver";
//Api version query parameter
static string APIVERS = "?api-version=1.0";
Можете ли вы предоставить подробную информацию о том, что вы пробовали и какие были неудачи? –
, когда я передаю httpContent мой вывод на консоль, скажите мне код ошибки 405, когда метод расследования не разрешен:/ –
Можете ли вы попробовать изменить sourceControlType на «TfVc»? –