private static Type[] GetAssemblyTypes(string targetPath)
{
var assemblies = new[] { @"*.dll" }.
SelectMany(i => Directory.GetFiles(targetPath, i)).ToArray();
var types = new List<Type>();
foreach (var assemblyName in assemblies)
{
try
{
var assembly = Assembly.LoadFrom(assemblyName);
types.AddRange(assembly.GetTypes());
}
catch (ReflectionTypeLoadException exception)
{
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(exception.ToString());
foreach (var loaderException in exception.LoaderExceptions)
{
stringBuilder.AppendLine(loaderException.ToString());
}
MessageBox.Show(stringBuilder.ToString());
throw;
}
catch (BadImageFormatException e)
{
// e.g. x64 assemblies.
MessageBox.Show(e.ToString());
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
throw;
}
}
var assemblyTypes = types.ToArray();
return assemblyTypes;
}