using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace AssemblyRef { class Program { static void Main(string[] args) { Assembly[] seeds = args.Select(i => Assembly.ReflectionOnlyLoadFrom(i)).ToArray(); List seen = new List(); foreach (string name in GetReferencedAssemblies(seeds, seen)) { Console.WriteLine(name); } } static IEnumerable GetReferencedAssemblies(IEnumerable assemblies, List seen) { List found = new List(); foreach (Assembly i in assemblies) { if (!seen.Contains(i.FullName)) { seen.Add(i.FullName); yield return i.FullName; foreach (AssemblyName name in i.GetReferencedAssemblies()) found.Add(Assembly.ReflectionOnlyLoad(name.FullName)); } } if (found.Count > 0) foreach (string name in GetReferencedAssemblies(found, seen)) yield return name; } } }