public void AddOrUpdate(string bstrName, string bstrVersion, Array pbstrMetadataElements, Array pbstrMetadataValues) { var matches = PackageReferenceNodes.Where(node => string.Equals(node.Name, bstrName, StringComparison.InvariantCultureIgnoreCase)); if (matches.Count() > 0) { XSharpPackageReferenceNode currentPackage = matches.First(); currentPackage.ItemNode.Item.SetMetadataValue("Version", bstrVersion); for (int j = 0; j < pbstrMetadataElements.Length; j++) { currentPackage.ItemNode.SetMetadata((string)pbstrMetadataElements.GetValue(j), (string)pbstrMetadataValues.GetValue(j)); } base.ProjectMgr.SetProjectFileDirty(value: true); currentPackage.ReDraw(UIHierarchyElement.Caption); ReDraw(UIHierarchyElement.Caption); } else { XSharpPackageReferenceNode packageReference = CreatePackageReferenceNode(bstrName); packageReference.ItemNode.Item.SetMetadataValue("Version", bstrVersion); for (int i = 0; i < pbstrMetadataElements.Length; i++) { packageReference.ItemNode.SetMetadata((string)pbstrMetadataElements.GetValue(i), (string)pbstrMetadataValues.GetValue(i)); } PackageReferenceNodes.Add(packageReference); AddChild(packageReference); } }
public void Remove(string bstrName) { var match = PackageReferenceNodes.Where(node => string.Equals(node.Name, bstrName, StringComparison.InvariantCultureIgnoreCase)).First(); if (match != null) { PackageReferenceNodes.Remove(match); match.Remove(removeFromStorage: false); } }
public bool TryGetReference(string bstrName, Array aDesiredMetadata, out string pbstrVersion, out Array aMetadataElements, out Array aMetadataValues) { // the array aDesiredMetadata contains the names of the properties // that they want. // we also always return the Version var nodes = PackageReferenceNodes.Where((n) => string.Equals(n.Name, bstrName, StringComparison.InvariantCultureIgnoreCase)); if (nodes.Count() == 0) { pbstrVersion = null; aMetadataElements = null; aMetadataValues = null; return(false); } var node = nodes.FirstOrDefault(); string verName = "Version"; pbstrVersion = ((!string.IsNullOrEmpty(node?.ItemNode.GetMetadata(verName))) ? node?.ItemNode.GetMetadata(verName) : node?.Version); var metadata = new Dictionary <string, string>(); var desiredMetadata = aDesiredMetadata.Cast <string>(); foreach (ProjectMetadata mde in node?.ItemNode.Item.Metadata) { if (desiredMetadata.Contains(mde.Name)) { metadata.Add(mde.Name, mde.EvaluatedValue); } else if (string.Compare(mde.Name, verName, ignoreCase: true) == 0) { metadata.Add(mde.Name, node.Version); } } aMetadataElements = metadata.Keys.ToArray(); aMetadataValues = metadata.Values.ToArray(); return(true); }