示例#1
0
        public override bool Equals(object obj)
        {
            AssemblyDescriptor ad = obj as AssemblyDescriptor;

            if (ad != null)
            {
                return(FileHash.Equals(ad.FileHash));
            }
            return(false);
        }
        /// <summary>
        /// Persist to the specified repository the specified ProcessRuntimeDescriptor
        /// and return the result
        /// </summary>
        /// <param name="repo"></param>
        /// <param name="descriptor"></param>
        /// <returns></returns>
        public static ProcessRuntimeDescriptor PersistToRepo(IRepository repo, ProcessRuntimeDescriptor descriptor)
        {
            Args.ThrowIfNull(repo, "repo");
            Args.ThrowIfNull(descriptor, "descriptor");

            List <AssemblyDescriptor> descriptors = new List <AssemblyDescriptor>();

            foreach (AssemblyDescriptor assDescriptor in descriptor.AssemblyDescriptors)
            {
                AssemblyDescriptor saved = repo.Save(assDescriptor);
                descriptors.Add(saved);
            }
            descriptor.AssemblyDescriptors = descriptors.ToArray();
            return(repo.Save(descriptor));
        }
示例#3
0
        private static void Recurse(Assembly ass, HashSet <AssemblyDescriptor> soFar)
        {
            AssemblyDescriptor descr = new AssemblyDescriptor(ass);

            if (!soFar.Contains(descr))
            {
                soFar.Add(descr);
                IEnumerable <AssemblyName> assemblyNames = ass.GetReferencedAssemblies()
                                                           .Where(AssemblyNameFilter);
                foreach (AssemblyName assName in assemblyNames)
                {
                    Assembly next = Assembly.Load(assName);
                    if (next == null)
                    {
                        Log.Default.Warning("Assembly not found: ({0})", assName.FullName);
                    }
                    else
                    {
                        Recurse(next, soFar);
                    }
                }
                ;
            }
        }