2017-02-20 44 views
0

Я пытался удалить GLOBALLIST из данных XML GLOBALLIST, а затем пытался импортировать обновленные данные XML на сервер TFS, но ничего не обновляется используя ниже строки кода. [ошибка не бросает]Удалить TFS GlobalList с использованием TFS ExtendedClient API

store.ImportGlobalLists(collectionGlobalListRoot.InnerXml); 

Примечание: здесь магазин является WorkItemStore и collectionGlobalListRoot является XMLDocument содержит все обновленного globallist XML коллекции.

Добавление GlobalList здесь отлично работает.

Мне интересно, нужно ли мне использовать любой другой механизм для уничтожения globallist через API?

Любая помощь будет высоко оценена.

ответ

0

Обычно обычный поток изменения Глобальный список экспортирует XML-файл глобального списка, модифицирует XML и импортирует его обратно.

Однако удаление глобального списка невозможно. Потому что Способы импорта/экспорта настроены таким образом, что вы также можете добавить или обновление 1 список вместо всего, вы никогда не сможете удалить список. Если вы не отправляете XML конкретного списка, он не обновляется.

Для удаления/уничтожения Глобального списка вам нужно создать специальный XML пакета, который вы можете отправить по методы SendUpdatePackge из WorkItemStore объекта. Пример кода, как показано ниже:

string globalListName = "Test Global List"; 

    XmlElement returnElement; 
    XmlDocument root = new XmlDocument(); 

    //Create a package element 
    XmlElement newChild = root.CreateElement("Package"); 
    root.AppendChild(newChild); 

    //Create a Destroy Global List element 
    XmlElement element2 = root.CreateElement("DestroyGlobalList"); 
    element2.SetAttribute("ListName", "*" + globalListName); 
    element2.SetAttribute("ForceDelete", true.ToString(CultureInfo.InvariantCulture)); 
    newChild.AppendChild(element2); 

    //Send Update to Work Item Store 
    store.SendUpdatePackage(newChild, out returnElement, false); 

Подробнее смотрите этот блог: Deleting (or destroying) a Global List with the TFS API

+0

@ Patric-MSFT я действительно видел URL уже. но нет такой функции SendUpdatePackage в API ExtendedClient. Есть идеи? – Rezoan

+0

@Rezoan см. Комментарии выше [link] (https://roadtoalm.com/2013/01/09/deleting-or-destroying-a-global-list-with-the-tfs-api/) , Попробуйте с https://onedrive.live.com/?id=61E84EB408BAD04%21920&cid=061E84EB408BAD04 –

+0

Увидел. Может быть, они используют какую-то пользовательскую библиотеку, но не уверены. Ждем любого официального ресурса. в любом случае я в настоящее время использую команду witadmin через Process и могу уничтожить globallist. Спасибо за ваши усилия. ценить это. :) – Rezoan

0

Вы можете использовать InternalAdmin.DestroyGlobalList() метод для удаления глобального списка.

государственной статической силы DestroyGlobalList (Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore магазин, строка globalListName, BOOL сила)

Член Microsoft.TeamFoundation.WorkItemTracking.Client.InternalAdmin

Резюме: Уничтожает принятый в Глобальном списке.

Параметры: store: force: Уничтожить списки, даже если они используются. globalListNames:

Код для справки:

using System; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string url = "http://xxx:8080/tfs/CollectionName/"; 
      string GlobalListName = "ListName"; 
      TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(url)); 
      WorkItemStore wis = ttpc.GetService<WorkItemStore>(); 
      InternalAdmin.DestroyGlobalList(wis, GlobalListName, false); 
     } 
    } 
} 
+0

Спасибо за ответ. Я попытаюсь использовать его и дам вам знать. – Rezoan

+0

@Rezoan Нет проблем, дайте мне знать, если у вас есть какие-либо проблемы с ним. :) –