abpframework/abp · critical · AbpException

Could not find a depended module

Error message

Could not find a depended module {dependedModuleType.AssemblyQualifiedName} for {module.Type.AssemblyQualifiedName}

What it means

Thrown by ModuleLoader.SetDependencies when a module declares a dependency (via DependsOnAttribute) whose type is not present in the loaded module set. ABP resolves all dependencies before startup, so a missing dependency aborts initialization. It is an AbpException naming both module and the missing dependency.

Solutions

  1. Add the missing module's assembly reference (or NuGet package) to the startup project.
  2. If the dependency is a plug-in, ensure its DLL is in the plug-in source folder and loaded.
  3. Remove or correct the DependsOnAttribute if the dependency is no longer needed.
  4. Verify load order: the depended module must be discoverable when SetDependencies runs.

Example fix

// before
[DependsOn(typeof(MissingModule))]
public class MyModule : AbpModule { }

// after
// add reference to the assembly containing MissingModule, or remove the dependency:
public class MyModule : AbpModule { }
Defensive patterns

Strategy: validation

Validate before calling

// Before startup, ensure every DependsOn module type is loaded:
static bool AllDependenciesPresent(IEnumerable<Type> loaded, Type module)
    => AbpModuleHelper.FindDependedModuleTypes(module)
        .All(d => loaded.Contains(d));

Type guard

static bool IsDependencyLoaded(Type dep, IEnumerable<Type> loaded) => loaded.Contains(dep);

Try / catch

try { await application.InitializeAsync(); }
catch (AbpException ex) when (ex.Message.Contains("Could not find a depended module"))
{
    logger.LogCritical(ex, "Missing module dependency at startup");
}

Prevention

When it happens

Trigger: A module's DependsOnAttribute references a module type that was never added to the AbpApplication (missing assembly reference, missing plug-in, or the dependency was removed).

Common situations: Forgetting to add a project/assembly reference for a depended module, a NuGet package downgrade that dropped a module, a plugin folder that no longer contains the dependency DLL, or a typo in DependsOn.

Related errors


AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13). Data as JSON: /api/errors/82808be21b0c781d. Report an issue: GitHub.

Appendix: source

Thrown at framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ModuleLoader.cs:100

    {
        return new AbpModuleDescriptor(moduleType, CreateAndRegisterModule(services, moduleType), isLoadedAsPlugIn);
    }

    protected virtual IAbpModule CreateAndRegisterModule(IServiceCollection services, Type moduleType)
    {
        var module = (IAbpModule)Activator.CreateInstance(moduleType)!;
        services.AddSingleton(moduleType, module);
        return module;
    }

    protected virtual void SetDependencies(List<AbpModuleDescriptor> modules, AbpModuleDescriptor module)
    {
        foreach (var dependedModuleType in AbpModuleHelper.FindDependedModuleTypes(module.Type))
        {
            var dependedModule = modules.FirstOrDefault(m => m.Type == dependedModuleType);
            if (dependedModule == null)
            {
                throw new AbpException("Could not find a depended module " + dependedModuleType.AssemblyQualifiedName + " for " + module.Type.AssemblyQualifiedName);
            }

            module.AddDependency(dependedModule);
        }
    }
}

View on GitHub (pinned to 7ed43b1931)