Beispiel #1
0
        private IEnumerable <PackageDependency> GetPackageDependenciesFromRepositoriesConfig(TeamProject teamProject, Item repository)
        {
            List <PackageDependency> repositoryDependencies = new List <PackageDependency>();

            Stream               repoFileStream               = repository.DownloadFile();
            XDocument            repoXml                      = XDocument.Load(repoFileStream);
            IEnumerable <string> relativePackageConfigPaths   = configInterpreter.GetRelativePackagesConfigPathsFromRepositoriesConfig(repoXml);
            string               repositoriesConfigServerPath = repository.ServerItem;
            int    repositoriesConfigLength                   = repositoriesConfigFileName.Length;
            string packageConfigFolderServerPath              = repositoriesConfigServerPath.Remove(repositoriesConfigServerPath.Length - repositoriesConfigLength, repositoriesConfigLength);

            foreach (string packageConfigPathRelativeToRepositoriesConfig in relativePackageConfigPaths)
            {
                // navigate to the folder server path for the repositories.config file
                string repositoryNodeServerItem = tfsServerPathTranslator.GetServerPath(packageConfigFolderServerPath, packageConfigPathRelativeToRepositoriesConfig);
                Item   packageConfig            = teamProject.VersionControlServer.GetItem(repositoryNodeServerItem);
                if (packageConfig != null)
                {
                    Stream    packagesConfigStream = packageConfig.DownloadFile();
                    XDocument packagesConfigXml    = XDocument.Load(packagesConfigStream);
                    IEnumerable <PackageDependency> packageDependencies = configInterpreter.GetPackageDependenciesFromPackagesConfig(packagesConfigXml);
                    foreach (PackageDependency packageDependency in packageDependencies)
                    {
                        if (repositoryDependencies.Where(dp => dp.Id == packageDependency.Id && dp.VersionSpec == packageDependency.VersionSpec).FirstOrDefault() == null)
                        {
                            repositoryDependencies.Add(packageDependency);
                        }
                    }
                }
            }

            return(repositoryDependencies);
        }