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
- Add the missing module's assembly reference (or NuGet package) to the startup project.
- If the dependency is a plug-in, ensure its DLL is in the plug-in source folder and loaded.
- Remove or correct the DependsOnAttribute if the dependency is no longer needed.
- 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
- Add assembly/NuGet references for every module in DependsOn.
- Keep plug-in folders populated with all dependency DLLs.
- Add a startup smoke test that builds the AbpApplication to catch missing modules early.
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
- Given type is not an ABP module: {moduleType.AssemblyQualifi
- Given module instance ({instance.GetType().AssemblyQualified
- An error occurred during the initialize {contributor.GetType
- Could not get module types from assembly: {assembly.FullName
- Could not get module types from assembly: {assembly.FullName
AI-assisted analysis of abpframework/abp@7ed43b1931 (2026-08-13).
Data as JSON: /api/errors/82808be21b0c781d.
Report an issue: GitHub.