abpframework/abp · critical · AbpException

Could not find a depended module {dependedModuleType.Assembl

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.

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)

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.