Как программно определить шаблон процесса уже созданного командного проекта с использованием TFS SDK?

Я внедряю веб-интерфейс для системы отслеживания ошибок TFS, чтобы клиенты могли войти в систему и вводить ошибки. Здесь я хочу добавить поля в соответствии с типом шаблона созданного командного проекта VSTS. Например, командный проект, созданный с использованием шаблона "Agile", имеет другой набор полей, чем другие шаблоны. Поэтому я хочу определить шаблон процесса командного проекта в начале.

Но "Microsoft.TeamFoundation.WorkItemTracking.Client.Project" не содержит поля для типа шаблона. Так как же определить тип шаблона процесса командного проекта?

4 ответа

Прямой ответ - вызвать GetProjectProperties.

Тем не менее, я согласен с Джоном, что вы, возможно, решаете более сложную проблему, чем необходимо. Конечно, вы согласитесь с тем, что написать полностью универсальный клиент WIT сложно. Однако настройка рабочего элемента очень распространена даже в организациях, которые используют стандартный шаблон процесса. Поэтому вам, вероятно, не удастся избежать одноразового решения, если только вы не захотите обновлять его каждый раз, когда администратор проекта обновляет свой шаблон ошибки.

Есть ли какая-то причина, по которой WIWA не работает для вас? (Обратите внимание, что ссылка для загрузки больше не действительна; теперь она является частью более широкой версии TSWA SP1.)

Также помните, что любое такое приложение, которое доступно клиентам (не внутреннему персоналу), будь то WIWA или что-то, что вы пишете самостоятельно, требует "лицензии внешнего соединителя" в соответствии с моделью TFS CAL.

Вместо:

Console.WriteLine(templateId);

использовать:

Console.WriteLine(projectProperties[2].Value);

Я фактически использовал следующий код:

static void GetProjectTemplate()
    {
        string collectionName = "http://<our_host_name>:8080/tfs/defaultcollection/";
        TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(collectionName)
            , new UICredentialsProvider());
        tfs.EnsureAuthenticated();
        ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
        string[] projects = { "proj1", "proj2", "proj3" };
        foreach (string proj in projects)
        {
            ProjectInfo projectInfo = css.GetProjectFromName(proj);
            String projectName;
            String prjState;
            int templateId = 0;
            ProjectProperty[] projectProperties;


            css.GetProjectProperties(
                projectInfo.Uri, out projectName, out prjState, out templateId, out projectProperties);
            Console.WriteLine(templateId);
        }

        // Locate templateId in the list of Process templates
        IProcessTemplates processTemplates = (IProcessTemplates)tfs.GetService(typeof(IProcessTemplates));
        XmlNode node = processTemplates.GetTemplateNames();
        Console.WriteLine(Regex.Replace( node.InnerXml,"<[A-Za-z]","\n$&", RegexOptions.ECMAScript ) );

    }

... скопировано и изменено здесь: http://www.databaseforum.info/30/1083827.aspx

Проблема в том, что я все еще получаю "-1" в качестве идентификатора шаблона. Значит ли это, что проекты были созданы без шаблона? Кроме того, я изменил проект и имена хостов выше для публикации здесь. (Это законные проекты).

Я не знаю ответа на ваш вопрос, но хочу кое-что сделать:

  • Я отредактировал ваш вопрос, чтобы понять, что вы спрашиваете о шаблонах процессов
  • Я также пояснил, что вы говорите о командных проектах, а не о файлах проектов Visual Studio. Эти два редактирования должны помешать людям думать, что вы спрашиваете о вещах, которые появляются, когда вы используете File->Add New Project.

Наконец, вы должны учитывать, что шаблоны процессов можно настраивать. Возможно, вы захотите организовать вокруг набора полей, а не по шаблону, если вам не нужна информация о самом шаблоне.

Другие вопросы по тегам