Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 internal virtual void LoadReferencesFromBuildProject(XSharpProjectNode buildProject)
 {
     foreach (var item in base.ProjectMgr.BuildProject.GetItems(ProjectFileConstants.PackageReference))
     {
         var           element       = new ProjectElement(base.ProjectMgr, item, false);
         var           referenceNode = new XSharpPackageReferenceNode(ProjectMgr, element);
         bool          found         = false;
         HierarchyNode i             = base.FirstChild;
         while (i != null && !found)
         {
             if (string.Compare(i.Caption, referenceNode.Caption, StringComparison.OrdinalIgnoreCase) == 0)
             {
                 found = true;
             }
             i = i.NextSibling;
         }
         if (!found)
         {
             AddChild(referenceNode);
             PackageReferenceNodes.Add(referenceNode);
         }
     }
 }
Пример #4
0
        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);
        }
Пример #5
0
 public IEnumerable <string> GetInstalledPackages()
 {
     return(PackageReferenceNodes.Select((XSharpPackageReferenceNode node) => node.Name));
 }