private static void FromDirectoryHelper(List <Assembly> assemblies, string path, bool recursive) { foreach (var file in Directory.GetFiles(path)) { var extension = Path.GetExtension(file).ToLower(); if (extension == ".dll" || extension == ".exe") { try { assemblies.Add(Assembly.LoadFrom(file)); } catch (BadImageFormatException) { // Ignore files that are not .NET assemblies } } } if (recursive) { foreach (var directory in Directory.GetDirectories(path)) { AssemblyFamily.FromDirectoryHelper(assemblies, directory, recursive); } } }
/// <summary> /// Creates an <see cref="AssemblyFamily"/> instance from all assemblies in the specified directory. /// </summary> /// <param name="path">The path from which to load the assemblies.</param> /// <param name="recursive">Indicates whether to recursively search for assemblies in descendant directories</param> /// <returns>The created <see cref="AssemblyFamily"/> instance.</returns> public static AssemblyFamily FromDirectory(string path, bool recursive = false) { var assemblies = new List <Assembly>(); AssemblyFamily.FromDirectoryHelper(assemblies, path, recursive); return(AssemblyFamily.FromAssemblies(assemblies)); }