All pastes #1630684 Raw Edit

Something

public text v1 · immutable
#1630684 ·published 2009-10-19 20:55 UTC
rendered paste body
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<string> seen = new List<string>();

            foreach (string name in GetReferencedAssemblies(seeds, seen))
            {
                Console.WriteLine(name);
            }
        }

        static IEnumerable<string> GetReferencedAssemblies(IEnumerable<Assembly> assemblies, List<string> seen)
        {
            List<Assembly> found = new List<Assembly>();

            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;
        }
    }
}