public List <ProjectInfo> ListAllProjects()
        {
            SoapInvoker invoker = new SoapInvoker(this);

            invoker.CreateEnvelope("ListAllProjects");
            var resultEl = invoker.InvokeResult();

            return(new List <ProjectInfo>(resultEl.Elements(this.MessageNs + "ProjectInfo").Select(x => ProjectInfo.FromXml(Collection, x))));
        }
        private IEnumerable <XElement> GetXmlCollections()
        {
            SoapInvoker invoker = new SoapInvoker(this);
            //var serviceNs =
            var message = invoker.CreateEnvelope("QueryResourcesByType");

            message.Add(new XElement(MessageNs + "resourceTypes", new XElement(MessageNs + "guid", projectCollectionsTypeId)));
            var resultElement = invoker.InvokeResult();

            return(resultElement.XPathSelectElements("./msg:CatalogResources/msg:CatalogResource", this.NsResolver));
        }
        internal T LoadService <T>()
            where T : TFSCollectionService
        {
            SoapInvoker invoker = new SoapInvoker(this);

            invoker.CreateEnvelope("QueryServices");
            var resultEl  = invoker.InvokeResult();
            T   service   = Activator.CreateInstance <T>();
            var serviceEl = resultEl.XPathSelectElement(string.Format("./msg:ServiceDefinitions/msg:ServiceDefinition[@identifier='{0}']", service.ServiceResolver.Id),
                                                        TeamFoundationServerServiceMessage.NsResolver);

            if (serviceEl == null)
            {
                throw new Exception("Service not found");
            }
            service.Server      = this.collection.Server;
            service.Collection  = this.collection;
            service.RelativeUrl = serviceEl.Attribute("relativePath").Value;
            return(service);
        }