2010-05-25 1 views

ответ

1

Лучше всего использовать библиотеки TFS DLL и этот 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 
} 
+1

Спасибо, я знаю, что полезно использовать библиотеки TFS DLL. Но я развиваюсь на Ubuntu, поэтому, я думаю, у меня нет лучшего варианта для общения с TFS ... Если есть, то дайте мне знать –

+0

Я согласен с Robaticus - напишите свой собственный уровень webservice в .NET и выполните это. В противном случае, когда Microsoft изменит свой уровень webservice, вам нужно будет много переработать. Или, пойдите с Моно? Я считаю, что DLL - управляемый код. – bryanjonker

5

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

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

var tfs = TeamFoundationServerFactory.GetServer(serverUri); 

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

    foreach (var projectInfo in projectCollection.ListProjects()) 
    { 
     listBox1.Items.Add(projectInfo.Name); 
    } 
+0

Спасибо, я знаю, что полезно использовать TFS DLL. Но я развиваюсь на Ubuntu, поэтому, я думаю, у меня нет лучшего варианта для обмена TFS ... Если есть один, пожалуйста, дайте мне знать –

+0

Можете ли вы создать для себя веб-уровень обслуживания, который находится на сервере TFS? – Robaticus

+0

@Prashant: На каком языке вы используете Ubuntu? –