Esempio n. 1
0
        private void MarkUnResolvable(List <Interface2> bundles, params Interface2[] unresolvedNodes)
        {
            Action <Interface2> action = null;

            foreach (Interface2 unresolvedNode in unresolvedNodes)
            {
                this.LogUnresolvedNode(unresolvedNode);
                List <Interface2> referencedBundles = this.GetReferencedBundles(bundles, unresolvedNode);
                referencedBundles.RemoveAll(referencedNode => !referencedNode.IsResolvable);
                if (action == null)
                {
                    action = delegate(Interface2 referencedNode) {
                        referencedNode.IsResolvable = false;
                        this.LogUnresolvedNode(referencedNode, unresolvedNode);
                    };
                }
                referencedBundles.ForEach(action);
                IFragmentBundleMetadataNode fragment = unresolvedNode as IFragmentBundleMetadataNode;
                if ((fragment != null) && (fragment.HostNode != null))
                {
                    fragment.HostNode.DetachFagment(fragment);
                    this.LogUnresolvedNode(fragment);
                }
                this.MarkUnResolvable(bundles, referencedBundles.ToArray());
            }
        }
Esempio n. 2
0
 public List <IAssemblyMetadataNode> DetachFagment(IFragmentBundleMetadataNode fragment)
 {
     if (fragment.HostNode != this)
     {
         throw new InvalidOperationException("A framgent node can only be detached from it's host node");
     }
     fragment.HostNode = null;
     this.FragmentNodes.Remove(fragment);
     base.ConstraintResolver.ResolvedAssemblyMetadataNodes.RemoveAll(a => fragment.SharedAssemblyNodes.Contains(a));
     return(new List <IAssemblyMetadataNode>(fragment.SharedAssemblyNodes));
 }
Esempio n. 3
0
 public List <IAssemblyMetadataNode> AttachFragment(IFragmentBundleMetadataNode fragment)
 {
     AssertUtility.ArgumentNotNull(fragment, "fragement");
     if (!this.FragmentNodes.Contains(fragment))
     {
         fragment.HostNode = this;
         base.ConstraintResolver.ResolvedAssemblyMetadataNodes.AddRange(fragment.SharedAssemblyNodes);
         base.ConstraintResolver.ResolvedAssemblyMetadataNodes.AddRange(fragment.PrivateAssemblyNodes);
         this.FragmentNodes.Add(fragment);
         this.SortByBundleID <IFragmentBundleMetadataNode>(this.FragmentNodes, true);
     }
     return(null);
 }
Esempio n. 4
0
 private void LogUnresolvedNode(IFragmentBundleMetadataNode unresolvedNode)
 {
     FileLogUtility.Inform(string.Format(Messages.FragmentDetachedForHostNotResolved, new object[] { unresolvedNode.SymbolicName, unresolvedNode.Version, unresolvedNode.HostNode.SymbolicName, unresolvedNode.HostNode.Version }));
 }