Пример #1
0
        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);
        }
Пример #2
0
        public static NuspecFilePath AsNuspecFilePath(this FilePath filePath)
        {
            var nuspecFilePath = new NuspecFilePath(filePath.Value);

            return(nuspecFilePath);
        }