private void LoadAssemblies() { var assemblies = new List <_Assembly>(); // Load composer assemblies var loadedAssemblies = _assemblyHelper.SafeLoadAssemblies(ComposerDllRegex); assemblies.AddRange(loadedAssemblies); // Load other assemblies next to executing assembly if (AutoCrawlEnabled) { assemblies.AddRange(_assemblyHelper.SafeLoadAssemblies()); } // Load specific assemblies if (AssembliesToInclude.Any()) { assemblies.AddRange(AssembliesToInclude); } // Add assemblies to dictionary foreach (var assembly in assemblies) { _appDomainAssemblies[assembly.FullName] = assembly; } LoadExtensionsFromAssemblies(); }
private ComposerHost(bool autoCrawlEnabled, params _Assembly[] assembliesToInclude) { AutoCrawlEnabled = autoCrawlEnabled; AssembliesToInclude = assembliesToInclude ?? new _Assembly[0]; if (!AutoCrawlEnabled && !AssembliesToInclude.Any()) { throw new ArgumentException("The constructor you used does not support Auto crawling of assemblies and you didn't define any assemblies to include."); } _dependencyContainer = new AutofacDependencyContainer(); _aspNetConfigurationManager = new AspNetConfigurationManager(); _assemblyHelper = new AssemblyHelper(); _appDomainAssemblies = new Dictionary <string, _Assembly>(); _environment = new ComposerEnvironment(); }
/// <summary> /// Determines whether the specified assembly name or file name can be included, given the set up include/exclude /// patterns and default include/exclude patterns /// </summary> bool IsIncluded(string assemblyNameOrFileName) { var isExplicitlyExcluded = AssembliesToSkip.Any(excluded => IsMatch(excluded, assemblyNameOrFileName)); if (isExplicitlyExcluded) { return(false); } var isExcludedByDefault = DefaultAssemblyExclusions.Any(exclusion => IsMatch(exclusion, assemblyNameOrFileName)); if (isExcludedByDefault) { return(false); } var noAssembliesWereExplicitlyIncluded = !AssembliesToInclude.Any(); var isExplicitlyIncluded = AssembliesToInclude.Any(included => IsMatch(included, assemblyNameOrFileName)); return(noAssembliesWereExplicitlyIncluded || isExplicitlyIncluded); }