コード例 #1
0
ファイル: AssemblyBrowser.cs プロジェクト: netxph/deep
        public AssemblyRecord Analyze(Assembly assembly)
        {
            var record = new AssemblyRecord();
            record.AssemblyName = assembly.GetName();
            record.Name = record.AssemblyName.Name;

            var version = record.AssemblyName.Version;
            record.Version = string.Format("{0}.{1}.{2}.{3}", version.Major.ToString().PadLeft(2), version.Minor.ToString().PadLeft(2), version.MajorRevision.ToString().PadLeft(2), version.MinorRevision.ToString().PadLeft(2));

            record.References = new List<AssemblyRecord>();

            foreach (var reference in assembly.GetReferencedAssemblies())
            {
                try
                {
                    var referenceAssembly = Assembly.ReflectionOnlyLoad(reference.FullName);
                    if (!referenceAssembly.GlobalAssemblyCache)
                    {
                        if (!_localCache.ContainsKey(referenceAssembly.FullName))
                        {
                            var referenceRecord = Analyze(referenceAssembly);
                            _localCache.Add(referenceAssembly.FullName, referenceRecord);
                        }

                        record.References.Add(_localCache[referenceAssembly.FullName]);
                    }
                }
                catch { }
            }

            record.References.Sort((a1, a2) => a1.Name.CompareTo(a2.Name));

            return record;
        }
コード例 #2
0
ファイル: Controller.cs プロジェクト: netxph/deep
        protected virtual void DisplayAssembly(AssemblyRecord record)
        {
            if (_records.Add(record))
            {
                Console.WriteLine(string.Format("Assembly: {0}", record.Name));
                Console.WriteLine("References:");

                foreach (var reference in record.References)
                {
                    string line = string.Format("{0}{1}", reference.Version.PadRight(15), reference.Name);
                    Console.WriteLine(line.PadLeft(line.Length + PAD_SIZE));
                }

                foreach (var reference in record.References)
                {
                    DisplayAssembly(reference);
                }

            }
        }