/// <summary> /// Loads a .nuspec file inside the given <see cref="XDocument"/>. /// </summary> /// <param name="nuspecDocument">The .nuspec file as an <see cref="XDocument"/>.</param> /// <returns>The newly loaded <see cref="NuspecFile"/>.</returns> public static NuspecFile Load(XDocument nuspecDocument) { NuspecFile nuspec = new NuspecFile(); string nuspecNamespace = nuspecDocument.Root.GetDefaultNamespace().ToString(); XElement package = nuspecDocument.Element(XName.Get("package", nuspecNamespace)); XElement metadata = package.Element(XName.Get("metadata", nuspecNamespace)); nuspec.Id = (string)metadata.Element(XName.Get("id", nuspecNamespace)) ?? string.Empty; nuspec.Version = (string)metadata.Element(XName.Get("version", nuspecNamespace)) ?? string.Empty; nuspec.Title = (string)metadata.Element(XName.Get("title", nuspecNamespace)) ?? string.Empty; nuspec.Authors = (string)metadata.Element(XName.Get("authors", nuspecNamespace)) ?? string.Empty; nuspec.Owners = (string)metadata.Element(XName.Get("owners", nuspecNamespace)) ?? string.Empty; nuspec.LicenseUrl = (string)metadata.Element(XName.Get("licenseUrl", nuspecNamespace)) ?? string.Empty; nuspec.ProjectUrl = (string)metadata.Element(XName.Get("projectUrl", nuspecNamespace)) ?? string.Empty; nuspec.IconUrl = (string)metadata.Element(XName.Get("iconUrl", nuspecNamespace)) ?? string.Empty; nuspec.RequireLicenseAcceptance = bool.Parse((string)metadata.Element(XName.Get("requireLicenseAcceptance", nuspecNamespace)) ?? "False"); nuspec.Description = (string)metadata.Element(XName.Get("description", nuspecNamespace)) ?? string.Empty; nuspec.ReleaseNotes = (string)metadata.Element(XName.Get("releaseNotes", nuspecNamespace)) ?? string.Empty; nuspec.Copyright = (string)metadata.Element(XName.Get("copyright", nuspecNamespace)); nuspec.Tags = (string)metadata.Element(XName.Get("tags", nuspecNamespace)) ?? string.Empty; nuspec.Dependencies = new List <NugetPackageIdentifier>(); var dependenciesElement = metadata.Element(XName.Get("dependencies", nuspecNamespace)); if (dependenciesElement != null) { IEnumerable <XElement> groups = dependenciesElement.Elements(XName.Get("group", nuspecNamespace)); // get groups if (groups.Count() > 0) // if there are groups { foreach (var iGroup in groups) // add dependancy in game { nuspec.addDependancies(iGroup, nuspecNamespace); } } else // no groups; add children of "dependancies" { nuspec.addDependancies(dependenciesElement, nuspecNamespace); } } nuspec.Files = new List <NuspecContentFile>(); var filesElement = package.Element(XName.Get("files", nuspecNamespace)); if (filesElement != null) { //UnityEngine.Debug.Log("Loading files!"); foreach (var fileElement in filesElement.Elements(XName.Get("file", nuspecNamespace))) { NuspecContentFile file = new NuspecContentFile(); file.Source = (string)fileElement.Attribute("src") ?? string.Empty; file.Target = (string)fileElement.Attribute("target") ?? string.Empty; nuspec.Files.Add(file); } } return(nuspec); }