public static void AssembliesFromPath(this IAssemblyScanner scanner, string path, Predicate<Assembly> assemblyFilter) { var assemblyPaths = Directory.GetFiles(path) .Where(file => Path.GetExtension(file).Equals( ".exe", StringComparison.OrdinalIgnoreCase) || Path.GetExtension(file).Equals( ".dll", StringComparison.OrdinalIgnoreCase)); foreach (var assemblyPath in assemblyPaths) { Assembly assembly = null; try { assembly = Assembly.LoadFrom(assemblyPath); } catch { } if (assembly != null && assemblyFilter(assembly)) scanner.Assembly(assembly); } }
public static void TheCallingAssembly(this IAssemblyScanner scanner) { var callingAssembly = findTheCallingAssembly(); if (callingAssembly != null) { scanner.Assembly(callingAssembly); } }
public static void AssembliesFromApplicationBaseDirectory(this IAssemblyScanner scanner, Func<Assembly, bool> assemblyFilter) { var assemblies = AssemblyFinder.FindAssemblies(assemblyFilter, txt => { Console.WriteLine("StructureMap could not load assembly from file " + txt); }, includeExeFiles: false); foreach (var assembly in assemblies) { scanner.Assembly(assembly); } }
public static void AssembliesAndExecutablesFromPath(this IAssemblyScanner scanner, string path) { var assemblies = AssemblyFinder.FindAssemblies(path, txt => { Console.WriteLine("StructureMap could not load assembly from file " + txt); }, includeExeFiles: true); foreach (var assembly in assemblies) { scanner.Assembly(assembly); } }
public static void AssembliesFromPath(this IAssemblyScanner scanner, string path, Func<Assembly, bool> assemblyFilter, bool includeExeFiles = false) { var assemblies = AssemblyFinder.FindAssemblies(path, txt => { Console.WriteLine("StructureMap could not load assembly from file " + txt); }, includeExeFiles: includeExeFiles).Where(assemblyFilter); foreach (var assembly in assemblies) { scanner.Assembly(assembly); } }
public static void AssembliesFromLibraryManager(this IAssemblyScanner scanner, Func<Assembly, bool> filter) { var loadContext = PlatformServices.Default.AssemblyLoadContextAccessor.Default; var libraryManager = PlatformServices.Default.LibraryManager; var assemblyNames = libraryManager.GetLibraries().SelectMany(l => l.Assemblies); var scanned = new List<string>(); foreach (var assemblyName in assemblyNames) { if (scanned.Contains(assemblyName.FullName)) { continue; } var assembly = loadContext.Load(assemblyName); scanned.Add(assemblyName.FullName); if (filter(assembly)) { scanner.Assembly(assembly); } } }
public static void AssembliesFromStartupInfo(this IAssemblyScanner scanner, ProgrammaticStartupInfo info) { if (info != null) foreach (var a in info.PluginAssemblies) scanner.Assembly(a); }