public IManageMigrations Build() { if (_resolver == null) { throw new InvalidOperationException("Missing dependency resolver"); } var types = _asm .SelectMany(a => AssemblyExtensions.GetTypesImplementing <IMigrationTask>(a, true) .Select(t => (IMigrationTask)_resolver.Resolve(t))) .Where(t => t.CurrentVersion != null) .ToArray(); if (types.Length == 0) { throw new MigrationNotFoundException("None of the provided assemblies contained SqlFu migrations"); } var runner = new MigrationTaskRunner(_db, _log); return(new MigrationsManager(GetSchemaExecutors(types, runner), runner)); }