Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        /// <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);
        }