public static IEnumerable <Type> FindTypesInAssemblies(Predicate <Type> predicate)
        {
            var dap        = new DefaultAssemblyProvider(LibraryManager);
            var assemblies = dap.CandidateAssemblies;

            return(FindTypesInAssemblies(assemblies, predicate));
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            DefaultAssemblyProvider provider = new DefaultAssemblyProvider();
            var assemblies = provider.GetAssemblies(@"C:\0\1MyProgram\0DesertFish\Lily.Framework\samples\Modularization\CoreConsole\Samples.Modularization.CoreConsoleHost\bin\Debug\Plugins", true);

            Console.ReadLine();
        }
Пример #3
0
        static void Main(string[] args)
        {
            var assemble          = Assembly.GetEntryAssembly();
            var dependencyContext = DependencyContext.Load(assemble);
            var aaa = dependencyContext.CompileLibraries;
            DefaultAssemblyProvider provider = new DefaultAssemblyProvider();
            var assemblies = provider.GetAssemblies(@"C:\0\1MyProgram\0DesertFish\Lily.Framework\samples\Modularization\NetConsole\Samples.Modularization.NetConsoleHost\bin\Debug\Plugins", true);

            Console.ReadLine();
        }
        public static Assembly FindAssembyByName(string name)
        {
            var dap        = new DefaultAssemblyProvider(LibraryManager);
            var assemblies = dap.CandidateAssemblies;
            var result     = (
                from Assembly assembly in assemblies
                let assemblyName = assembly.GetName()
                                   where System.String.Compare(name, assemblyName.Name, System.StringComparison.OrdinalIgnoreCase) == 0
                                   select assembly);

            return(result.FirstOrDefault());
        }
Пример #5
0
        internal static void GenerateTagHelpers(
            IApplicationEnvironment applicationEnvironment,
            ILibraryManager libraryManager)
        {
            var assemblyProvider = new DefaultAssemblyProvider(libraryManager);
            var viewComponentDescriptorProvider = new DefaultViewComponentDescriptorProvider(assemblyProvider);
            var viewComponentDescriptors = viewComponentDescriptorProvider.GetViewComponents();

            if (viewComponentDescriptors.Any())
            {
                var moduleBuilder = new TagHelperModuleBuilder(applicationEnvironment);
                var proxyGenerator = new ViewComponentTagHelperProxyGenerator(moduleBuilder);

                foreach (var viewComponentDescriptor in viewComponentDescriptors)
                {
                    proxyGenerator.CreateTagHelper(viewComponentDescriptor);
                }

                moduleBuilder.Build();
            }
        }
Пример #6
0
        public void CandidateAssemblies_ReturnsLibrariesReferencingAnyMvcAssembly()
        {
            // Arrange
            var manager = new Mock <ILibraryManager>();

            manager.Setup(f => f.GetReferencingLibraries(It.IsAny <string>()))
            .Returns(Enumerable.Empty <ILibraryInformation>());
            manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.Core"))
            .Returns(new[] { CreateLibraryInfo("Foo") });
            manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.ModelBinding"))
            .Returns(new[] { CreateLibraryInfo("Bar") });
            manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc"))
            .Returns(new[] { CreateLibraryInfo("Baz") });
            var provider = new DefaultAssemblyProvider(manager.Object);

            // Act
            var candidates = provider.GetCandidateLibraries();

            // Assert
            Assert.Equal(new[] { "Baz", "Foo", "Bar" }, candidates.Select(a => a.Name));
        }
        public IEnumerable <Assembly> GetLoadedAssemblies()
        {
            var dap = new DefaultAssemblyProvider(_libraryManager);

            return(dap.CandidateAssemblies);

            return(_libraryManager.GetReferencingLibraries(_coreAssemblyName.Name)
                   .Select(info => Assembly.Load(new AssemblyName(info.Name))));

            var dd = _libraryManager.GetLibraries();

            foreach (var ll in dd)
            {
                System.Diagnostics.Debug.WriteLine("Library:>>" + ll.Name);
            }

            var assemblies = dd.Select(info => Assembly.Load(new AssemblyName(info.Name)));

            return(assemblies);

/*
 *          var referencingLibrary = _libraryManager.GetReferencingLibraries(_coreAssemblyName.Name);
 *
 *          var many = _libraryManager.GetReferencingLibraries(_coreAssemblyName.Name)
 *              .SelectMany(info => info.Assemblies);
 *          foreach (var assemblyName in many)
 *          {
 *              System.Diagnostics.Debug.WriteLine("Assembly:>>" + assemblyName);
 *
 *          }
 *
 *          var result = referencingLibrary.Select(info =>
 *          {
 *              return Assembly.Load(new AssemblyName(info.Name));
 *          });
 *          return result;
 * //            return _libraryManager.GetReferencingLibraries(_coreAssemblyName.Name)
 * //                                  .Select(info => Assembly.Load(new AssemblyName(info.Name)));
 */
        }
Пример #8
0
        public static IServiceProvider BuildServiceProvider(this IServiceCollection services,
                                                            IConfiguration configuration)
        {
            var libraryManager     = services.GetService <ILibraryManager>();
            var dependencyResolver = services.GetService <IDependencyResolver>();

            var dap = new DefaultAssemblyProvider(libraryManager);

            IEnumerable <Assembly> assemblies = dap.CandidateAssemblies;

            dependencyResolver.RegisterModules(assemblies);

            ConfigurationModule configurationModule = new ConfigurationModule(configuration);

            dependencyResolver.RegisterModule(configurationModule);

            dependencyResolver.Build();

            IServiceProvider serviceProvider = dependencyResolver.Resolve <IServiceProvider>();

            return(serviceProvider);
        }
Пример #9
0
        public void CandidateAssemblies_IgnoresMvcAssemblies()
        {
            // Arrange
            var manager = new Mock <ILibraryManager>();

            manager.Setup(f => f.GetReferencingLibraries(It.IsAny <string>()))
            .Returns(new[]
            {
                CreateLibraryInfo("Microsoft.AspNet.Mvc.Core"),
                CreateLibraryInfo("Microsoft.AspNet.Mvc"),
                CreateLibraryInfo("Microsoft.AspNet.Mvc.ModelBinding"),
                CreateLibraryInfo("SomeRandomAssembly"),
            })
            .Verifiable();
            var provider = new DefaultAssemblyProvider(manager.Object);

            // Act
            var candidates = provider.GetCandidateLibraries();

            // Assert
            Assert.Equal(new[] { "SomeRandomAssembly" }, candidates.Select(a => a.Name));
        }
Пример #10
0
        /// <summary>
        /// Fors the assemblies.
        /// </summary>
        /// <param name="assemblies">The assemblies.</param>
        /// <param name="diagnosticSource">The diagnostic source.</param>
        /// <returns>Func&lt;IHostBuilder, IRocketHostBuilder&gt;.</returns>
        public static Func <IHostBuilder, IRocketHostBuilder> ForAssemblies(
            IEnumerable <Assembly> assemblies,
            DiagnosticSource diagnosticSource = null)
        {
            return(builder =>
            {
                var b = RocketHostExtensions.GetOrCreateBuilder(builder);
                if (diagnosticSource != null)
                {
                    b = b.With(diagnosticSource);
                }

                var logger = new DiagnosticLogger(b.DiagnosticSource);
                var enumerable = assemblies as Assembly[] ?? assemblies.ToArray();
                var assemblyCandidateFinder = new DefaultAssemblyCandidateFinder(enumerable, logger);
                var assemblyProvider = new DefaultAssemblyProvider(enumerable, logger);
                var scanner = new SimpleConventionScanner(assemblyCandidateFinder, b.ServiceProperties, logger);
                return RocketHostExtensions.Swap(b, b
                                                 .With(assemblyCandidateFinder)
                                                 .With(assemblyProvider)
                                                 .With(scanner)
                                                 );
            });
        }
Пример #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AssemblyProvider"/> class.
        /// </summary>
        /// <param name="logger"><see cref="ILogger"/> for logging.</param>
        /// <param name="pluginAssemblies"><see cref="IEnumerable{T}"/> of string representations of assemblies containing plugins.</param>
        public AssemblyProvider(ILogger logger, IEnumerable <string> pluginAssemblies)
        {
            _innerProvider = new DefaultAssemblyProvider(logger);
            _baseLibraries = _innerProvider.Libraries;
            _libraries.AddRange(_baseLibraries);

            pluginAssemblies.ForEach(pluginAssembly =>
            {
                var assembly     = Assembly.LoadFrom(pluginAssembly);
                var basePath     = Path.GetDirectoryName(assembly.Location);
                var assemblyName = assembly.GetName();
                _localLibraries.Add(CreateLibraryFrom(basePath, assemblyName));

                var assemblies = assembly.GetReferencedAssemblies();
                var libraries  = assemblies
                                 .Where(_ => !_baseLibraries.Any(l => l.Name == _.Name))
                                 .Select(_ => CreateLibraryFrom(basePath, _))
                                 .Where(_ => _ != null)
                                 .ToArray();
                _localLibraries.AddRange(libraries);
            });

            _libraries.AddRange(_localLibraries);
        }
 public ExtensionAssemblyProvider(DefaultAssemblyProvider defaultAssemblyProvider)
 {
     this.defaultAssemblyProvider = defaultAssemblyProvider;
 }
Пример #13
0
 public ModuleAssemblyProvider(DefaultAssemblyProvider defaultAssemblyProvider)
 {
     DefaultAssemblyProvider = defaultAssemblyProvider;
 }