public static IEnumerable<Assembly> FindAssemblies(Func<Assembly, bool> filter,
Action<string> onDirectoryFound = null)
{
if (onDirectoryFound == null)
{
onDirectoryFound = dir => { };
}
var list = new List<string> {AppDomain.CurrentDomain.SetupInformation.ApplicationBase};
var binPath = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath;
if (binPath.IsNotEmpty())
{
if (Path.IsPathRooted(binPath))
{
list.Add(binPath);
}
else
{
list.Add(AppDomain.CurrentDomain.SetupInformation.ApplicationBase.AppendPath(binPath));
}
}
list.Each(x => onDirectoryFound(x));
return FindAssemblies(list, filter);
}