private NuGetPackage CreateNuGetPackageFromXmlPackageElement(XElement xmlPackageElement) { NuGetPackage nuGetPackage = new NuGetPackage(); nuGetPackage.Id = xmlPackageElement.Attribute(Constants.IdAttribute).Value; nuGetPackage.Version = xmlPackageElement.Attribute(Constants.VersionAttribute).Value; return(nuGetPackage); }
public bool PackageExists(string packageId, string projectFilePath) { string packagesConfigFilePath = this.GetPackagesConfigFilePathForProject(projectFilePath); NuGetPackage nuGetPackage = this.packagesConfigFileEditor.FindPackage(packagesConfigFilePath, packageId); if (nuGetPackage != null) { return(true); } return(false); }
public NuGetPackage FindPackage(string packagesConfigFilePath, string packageId) { NuGetPackage nuGetPackage = null; base.ReadFile(packagesConfigFilePath, (doc) => { IEnumerable <XElement> xmlPackageElements = doc.Element(Constants.PackagesElem) .Elements(Constants.PackageElem); XElement xmlPackageElement = xmlPackageElements.FirstOrDefault(p => p.Attribute(Constants.IdAttribute).Value == packageId); if (xmlPackageElement != null) { nuGetPackage = this.CreateNuGetPackageFromXmlPackageElement(xmlPackageElement); } }); return(nuGetPackage); }
public NuGetPackage FindPackage(string packagesConfigFilePath, string packageId) { NuGetPackage nuGetPackage = null; base.ReadFile(packagesConfigFilePath, (doc) => { IEnumerable <XElement> packages = doc.Element(Constants.PackagesElem) .Elements(Constants.PackageElem); XElement package = packages.FirstOrDefault(p => p.Attribute(Constants.IdAttribute).Value == packageId); if (package != null) { nuGetPackage = new NuGetPackage(); nuGetPackage.Id = package.Attribute(Constants.IdAttribute).Value; nuGetPackage.Version = package.Attribute(Constants.VersionAttribute).Value; } }); return(nuGetPackage); }
public async Task <NuGetPackage> GetPackageWithFullDependencyTree(string id, string version, IEnumerable <string> sources, Regex supportedFrameworksRegex = null) { // First, try to retrieve the data from the local cache var packageDependenciesHashFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalPackagesInfoCacheFolder, string.Concat(id, version)); if (File.Exists(packageDependenciesHashFilePath)) { return(JsonConvert.DeserializeObject <NuGetPackage>(File.ReadAllText(packageDependenciesHashFilePath))); } XDocument nuGetPackageXmlDoc = await this.GetPackageXmlDocument(id, version, sources); if (nuGetPackageXmlDoc == null) { return(null); } XElement propertiesElement = nuGetPackageXmlDoc .Element(this.xmlns + Constants.EntryElem) .Element(this.xmlnsm + Constants.PropertiesElem); NuGetPackage nuGetPackage = new NuGetPackage(); nuGetPackage.Id = nuGetPackageXmlDoc .Element(this.xmlns + Constants.EntryElem) .Element(this.xmlns + Constants.TitleElem).Value; nuGetPackage.Version = propertiesElement.Element(this.xmlnsd + Constants.VersionElem).Value; string dependenciesString = propertiesElement.Element(this.xmlnsd + Constants.DependenciesElem).Value; if (!string.IsNullOrWhiteSpace(dependenciesString)) { string[] dependencyStrings = dependenciesString.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); if (dependencyStrings.Length > 0) { foreach (string dependencyString in dependencyStrings) { // Do Not RemoveEmtpyEntires below. The entry from the framework is the last element in the dependencyString // e.g.System.ComponentModel.Annotations:4.7.0:net48 if it is missing System.ComponentModel.Annotations:4.7.0: // If it is missing it means that the package does not depend on particular framework string[] dependencyIdAndVersionAndFramework = dependencyString.Split(new char[] { ':' }); if (dependencyIdAndVersionAndFramework.Length > 0 && !string.IsNullOrWhiteSpace(dependencyIdAndVersionAndFramework[0])) { bool isFrameworkSupported = true; if (supportedFrameworksRegex != null && dependencyIdAndVersionAndFramework.Length > 2) { string framework = dependencyIdAndVersionAndFramework[2].Trim(); if (!string.IsNullOrEmpty(framework)) { isFrameworkSupported = supportedFrameworksRegex.IsMatch(framework); } } if (isFrameworkSupported) { string dependencyId = dependencyIdAndVersionAndFramework[0].Trim(); string dependencyVersionString = dependencyIdAndVersionAndFramework[1].Trim(); string[] dependencyVersions = this.ParseVersionString(dependencyVersionString); string dependencyVersion = dependencyVersions[0]; NuGetPackage nuGetPackageDependency = await this.GetPackageWithFullDependencyTree(dependencyId, dependencyVersion, sources, supportedFrameworksRegex); if (nuGetPackageDependency != null) { nuGetPackage.Dependencies.Add(nuGetPackageDependency); } } } } } } // Include the current package in the local cache Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalPackagesInfoCacheFolder)); File.WriteAllText(packageDependenciesHashFilePath, JsonConvert.SerializeObject(nuGetPackage)); return(nuGetPackage); }
private string GetNuGetPackageDir(string solutionDir, NuGetPackage nuGetPackage) { string nuGetPackageFolderName = $"{nuGetPackage.Id}.{nuGetPackage.Version}"; return(Path.Combine(solutionDir, PackagesFolderName, nuGetPackageFolderName)); }