using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Linq;
namespace SampleConsole
{
class Program
{
static void Main(string[] args)
{
string find = "SessionState";
string dir = @"D:\project\website\XXX\website\XXX.Core\trunk\Lib\Dll";
new DirectoryInfo(dir)
.EnumerateFiles("*.dll", SearchOption.AllDirectories)
.AsParallel()
.Select(f => f.FullName)
.Select(p =>
{
try
{
return new
{
Path = p.ToLower().Replace(dir.ToLower(), string.Empty),
Assembly = Assembly.LoadFrom(p)
};
}
catch (BadImageFormatException) { return null; }
}).Where(x => x != null)
.Select(x =>
{
try
{
return new
{
Path = x.Path,
Types = x.Assembly.GetTypes().AsParallel()
.Select(t => t.FullName)
.Where(s => s.IndexOf(find) > -1)
};
}
catch (ReflectionTypeLoadException) { return null; }
}).Where(x => x != null && x.Types.Count() > 0)
.ToList()
.ForEach(x =>
Console.WriteLine(x.Path + "\n" + x.Types.Aggregate((a, b) => a + "\n" + b) + "\n\n")
);
}
}
}