/// Note: currently no need for this capability. public static PackageSpecification[] GetPackageReferences(ProjectFilePath projectFilePath) { var packageSpecifications = new List <PackageSpecification>(); // dotnet list package output is too complicated to parse, so just go direct to XML. var doc = new XmlDocument(); doc.Load(projectFilePath.Value); var nodes = doc.SelectNodes("//Project/ItemGroup/PackageReference"); for (int iNode = 0; iNode < nodes.Count; iNode++) { var node = nodes.Item(iNode); var includeAttribute = node.Attributes["Include"]; var versionAttribute = node.Attributes["Version"]; var packageID = includeAttribute.Value.AsPackageID(); var packageVersion = Version.Parse(versionAttribute.Value); var packageSpecification = new PackageSpecification(packageID, packageVersion); packageSpecifications.Add(packageSpecification); } var output = packageSpecifications.ToArray(); return(output); }
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 void AddPackageToProject(ProjectFilePath projectFilePath, PackageSpecification packageSpecification, ILogger logger) { logger.LogDebug($"{projectFilePath} - Adding package to project file:\n{packageSpecification}"); var packageArgument = " " + $"package {packageSpecification.ID}"; var versionArgument = packageSpecification.HasVersion() ? " " + $"--version {packageSpecification.Version}" : String.Empty; var arguments = $@"add ""{projectFilePath}""{packageArgument}{versionArgument}"; ProcessRunner.Run(DotnetCommand.Value, arguments); logger.LogInformation($"{projectFilePath} - Added package to project file:\n{packageSpecification}"); }
public void SetUp() { _sut = new PackageSpecification(); }
public void AddPackageReference(ProjectFilePath projectFilePath, PackageSpecification package) { DotnetCommandServicesProvider.AddPackageToProject(projectFilePath, package, this.Logger); }