public static PackagesFileData ReadFile(string packagesFilePath) { var packagesDocument = XDocument.Load(packagesFilePath); var result = new PackagesFileData(); var xmlUsedPackages = packagesDocument.Element("packages").Elements("package"); foreach (var xmlUsedPackage in xmlUsedPackages) { var packageId = xmlUsedPackage.Attribute("id")?.Value ?? string.Empty; var packageVersion = xmlUsedPackage.Attribute("version")?.Value ?? string.Empty; if (string.IsNullOrWhiteSpace(packageId) || string.IsNullOrWhiteSpace(packageVersion)) { continue; } result.Packages.Add(new PackageInfo(packageId, packageVersion)); } return(result); }
private static Dictionary <string, PackagesFileData> GetProjectToPackagesMap(IEnumerable <string> projectFilePathes) { var projectsAndPackages = from projectPath in projectFilePathes let fileName = Path.GetFileName(projectPath) let projectFolder = Path.GetDirectoryName(projectPath) let packagesFilePath = Path.Combine(projectFolder, "packages.config") where File.Exists(projectPath) && File.Exists(packagesFilePath) select new { ProjectPath = projectPath, PackageFile = PackagesFileData.ReadFile(packagesFilePath) }; return(projectsAndPackages.ToDictionary(pp => pp.ProjectPath, pp => pp.PackageFile)); }