Как получить список проектов из TFS?

Как получить список проектов с сервера TFS с помощью веб-сервиса?

Доступна ли документация для веб-служб TFS?


person Prashant Cholachagudda    schedule 25.05.2010    source источник


Ответы (2)


Я тоже согласен с брянджонкером. Не вызывайте веб-сервис напрямую, это действительно зарезервировано для внутреннего использования. Создайте свой собственный уровень доступа и вызовите API.

Вы также можете использовать объектную модель, чтобы получить доступ к ICommonStructureService. Я недавно начал использовать это, и считаю, что это чище. Код ниже делает то же самое, что и пример bryanjonker:

    var tfs = TeamFoundationServerFactory.GetServer(serverUri);

    var projectCollection = tfs.GetService<ICommonStructureService>();

    foreach (var projectInfo in projectCollection.ListProjects())
    {
        listBox1.Items.Add(projectInfo.Name);
    }
person Robaticus    schedule 25.05.2010
comment
Спасибо, я знаю, что хорошо использовать DLL TFS. Но я разрабатываю Ubuntu, поэтому, думаю, у меня нет лучшего варианта для связи с TFS... Если есть, дайте мне знать - person Prashant Cholachagudda; 25.05.2010
comment
Можете ли вы создать для себя уровень веб-сервиса, который находится на сервере TFS? - person Robaticus; 25.05.2010
comment
@Prashant: Какой язык вы используете в Ubuntu? - person Alfred Myers; 13.06.2012

Лучше всего использовать библиотеки DLL TFS и этот API, который находится по адресу http://msdn.microsoft.com/en-us/library/bb130146(VS.80).aspx и http://msdn.microsoft.com/en-us/library/bb130334(v=VS.80).aspx . Насколько я понимаю, прямое попадание в веб-сервис не одобряется.

Чтобы получить список проектов, я думаю, есть несколько способов сделать это. Я разместил код, который использовал: используйте метод GetServer для получения коллекции проектов, затем перечислите с помощью метода ListProjects(). Мне нужно было сделать это, потому что мне нужно было получить области и итерации. Для этого требуется пространство имен Microsoft.TeamFoundation.Client.

var tfs = TeamFoundationServerFactory.GetServer(Constants.TEAMFOUNDSERVER);
var projectCollection  = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
foreach (var projectInfo in projectCollection.ListProjects()) 
{
     //do stuff here
}
person bryanjonker    schedule 25.05.2010
comment
Спасибо, я знаю, что хорошо использовать DLL TFS. Но я разрабатываю Ubuntu, поэтому, думаю, у меня нет лучшего варианта для связи с TFS... Если есть, дайте мне знать - person Prashant Cholachagudda; 25.05.2010
comment
Я согласен с Робатикусом - напишите свой собственный слой веб-сервиса в .NET и выполните его. В противном случае, когда Microsoft изменит свой уровень веб-сервиса, вам придется много переделывать. Или пойти с Моно? Я считаю, что библиотеки DLL являются управляемым кодом. - person bryanjonker; 25.05.2010