public IEnumerable<AssemblyRegistration> GetAssemblyRegistrations()
        {
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;

            var scanner = new AssemblyScanner();
            scanner.ExcludeFileNameStartsWith("Topshelf.", "NewId.", "Newtonsoft.", "log4net.", "NLog.", "Autofac.", "RabbitMQ.", "Microsoft.", "System.",
                "SQLite.");
            scanner.Include(IsSupportedType);

            try
            {
                scanner.AssembliesFromApplicationBaseDirectory();

                var typeSet = scanner.ScanForTypes().Result;

                List<AssemblyRegistration> registrations = typeSet.FindTypes(TypeClassification.Concrete | TypeClassification.Closed)
                    .GroupBy(x => x.Assembly)
                    .Select(x => new AssemblyRegistration(x.Key, x.ToArray()))
                    .ToList();

                return registrations;
            }
            finally
            {
                AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve;
            }
        }
        public IEnumerable <AssemblyRegistration> GetAssemblyRegistrations()
        {
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;

            var scanner = new AssemblyScanner();

            scanner.ExcludeFileNameStartsWith("Topshelf.", "NewId.", "Newtonsoft.", "log4net.", "NLog.", "Autofac.", "RabbitMQ.", "Microsoft.", "System.",
                                              "SQLite.");
            scanner.Include(IsSupportedType);

            try
            {
                scanner.AssembliesFromApplicationBaseDirectory();

                var typeSet = scanner.ScanForTypes().Result;

                List <AssemblyRegistration> registrations = typeSet.FindTypes(TypeClassification.Concrete | TypeClassification.Closed)
                                                            .GroupBy(x => x.Assembly)
                                                            .Select(x => new AssemblyRegistration(x.Key, x.ToArray()))
                                                            .ToList();

                return(registrations);
            }
            finally
            {
                AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve;
            }
        }
        public Type GetHostBusFactoryType()
        {
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;

            try
            {
                var scanner = new AssemblyScanner();
                scanner.IncludeFileNameStartsWith("MassTransit.");
                scanner.Include(IsHostBusFactoryType);

                scanner.AssembliesFromApplicationBaseDirectory();

                var typeSet = scanner.ScanForTypes().Result;

                var busFactoryType = typeSet.FindTypes(TypeClassification.Concrete | TypeClassification.Closed)
                    .FirstOrDefault();

                return busFactoryType;
            }
            finally
            {
                AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve;
            }
        }
        public Type GetHostBusFactoryType()
        {
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;

            try
            {
                var scanner = new AssemblyScanner();
                scanner.IncludeFileNameStartsWith("MassTransit.");
                scanner.Include(IsHostBusFactoryType);

                scanner.AssembliesFromApplicationBaseDirectory();

                var typeSet = scanner.ScanForTypes().Result;

                var busFactoryType = typeSet.FindTypes(TypeClassification.Concrete | TypeClassification.Closed)
                                     .FirstOrDefault();

                return(busFactoryType);
            }
            finally
            {
                AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve;
            }
        }