public static PackageSpecification GetPackageSpecification(NuspecFilePath nuspecFilePath) { var xmlDoc = new XmlDocument(); xmlDoc.Load(nuspecFilePath.Value); var packageElement = xmlDoc.SelectSingleNode("//*[local-name()='package']"); var namespaceAttribute = packageElement.Attributes["xmlns"]; var defaultNamespaceValue = namespaceAttribute.Value; // Example: "http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd", but annoyingly can be different between Visual Studio's NuGet and the latest NuGet executable. // Create a namespace manager. var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable); xmlnsManager.AddNamespace("default", defaultNamespaceValue); var metadataElement = xmlDoc.SelectSingleNode("//default:package/default:metadata", xmlnsManager); var IDElementXPath = "//default:package/default:metadata/default:id"; var IDElement = xmlDoc.SelectSingleNode(IDElementXPath, xmlnsManager); var ID = IDElement.InnerText; var versionElementXPath = "//default:package/default:metadata/default:version"; var versionElement = xmlDoc.SelectSingleNode(versionElementXPath, xmlnsManager); var versionString = versionElement.InnerText; var version = Version.Parse(versionString); var specification = new PackageSpecification { ID = ID.AsPackageID(), Version = version, }; return(specification); }
public static NuspecFilePath AsNuspecFilePath(this FilePath filePath) { var nuspecFilePath = new NuspecFilePath(filePath.Value); return(nuspecFilePath); }