microsoft/semantic-kernel · error · KernelException
Unable to create inner step type from assembly qualified nam
Error message
Unable to create inner step type from assembly qualified name `{this.InnerStepDotnetType}` What it means
Thrown when Type.GetType cannot resolve the InnerStepDotnetType assembly-qualified name to a .NET Type. The Dapr runtime stores each step's fully qualified type name and must rehydrate it; if the assembly is missing or the name is malformed, type resolution returns null.
Source
Thrown at dotnet/src/Experimental/Process.Runtime.Dapr/DaprStepInfo.cs:50
/// </summary>
public required KernelProcessStepState State { get; init; }
/// <summary>
/// A read-only dictionary of output edges from the Step.
/// </summary>
public required Dictionary<string, List<KernelProcessEdge>> Edges { get; init; }
/// <summary>
/// Builds an instance of <see cref="KernelProcessStepInfo"/> from the current object.
/// </summary>
/// <returns>An instance of <see cref="KernelProcessStepInfo"/></returns>
/// <exception cref="KernelException"></exception>
public KernelProcessStepInfo ToKernelProcessStepInfo()
{
Type? innerStepType = Type.GetType(this.InnerStepDotnetType);
if (innerStepType is null)
{
throw new KernelException($"Unable to create inner step type from assembly qualified name `{this.InnerStepDotnetType}`");
}
if (!typeof(KernelProcessStep).IsAssignableFrom(innerStepType))
{
throw new KernelException($"Type '{this.InnerStepDotnetType}' is not a valid KernelProcessStep type.");
}
return new KernelProcessStepInfo(innerStepType, this.State, this.Edges);
}
/// <summary>
/// Initializes a new instance of the <see cref="DaprStepInfo"/> class from an instance of <see cref="KernelProcessStepInfo"/>.
/// </summary>
/// <returns>An instance of <see cref="DaprStepInfo"/></returns>
public static DaprStepInfo FromKernelStepInfo(KernelProcessStepInfo kernelStepInfo)
{
Verify.NotNull(kernelStepInfo, nameof(kernelStepInfo));
View on GitHub (pinned to c028a0c7dc)
Solutions
- Ensure the assembly containing the KernelProcessStep type is deployed and loaded by the Dapr actor host process.
- Verify InnerStepDotnetType is a full assembly-qualified name (includes assembly, version, culture, PublicKeyToken) as Type.GetType requires.
- If the type was renamed/moved, register an AssemblyLoadContext or TypeForwardedFrom redirection, or re-persist the process with the new type name.
- Check for trimming/AOT settings that may have stripped the type metadata.
Defensive patterns
Strategy: validation
Validate before calling
foreach (var step in daprSteps)
{
var t = Type.GetType(step.InnerStepDotnetType);
if (t is null)
throw new InvalidOperationException($"Cannot resolve type '{step.InnerStepDotnetType}'; load the assembly first.");
} Type guard
public static bool IsResolvableStepType(string assemblyQualifiedTypeName) =>
Type.GetType(assemblyQualifiedTypeName) is not null; Try / catch
try
{
var info = daprStepInfo.ToKernelProcessStepInfo();
}
catch (KernelException ex) when (ex.Message.Contains("Unable to create inner step type"))
{
_logger.LogError(ex, "Step type assembly not loaded; verify deployment.");
throw;
} Prevention
- Deploy all step definition assemblies to the Dapr actor host.
- Store full assembly-qualified type names (assembly + version + PublicKeyToken).
- Watch for trimming/AOT removing type metadata.
When it happens
Trigger: DaprStepInfo.ToKernelProcessStepInfo() calls Type.GetType(this.InnerStepDotnetType); a null result means the runtime cannot find the assembly or the type within it.
Common situations: The step type lives in an assembly not loaded by the Dapr actor host, the assembly-qualified name was truncated/stored without assembly info, or the type was renamed/moved between versions. Common when deploying actors separately from the step definition assemblies.
Related errors
- Could not load the inner step type '{stepInfo.InnerStepDotne
- Could not load type '{assemblyQualifiedTypeName}'.
- Type '{stepStateType.Value}' could not be resolved to a vali
- The ActivateAsync method for the KernelProcessStep could not
- The ActivateAsync method failed to complete.
AI-assisted analysis of microsoft/semantic-kernel@c028a0c7dc (2026-08-13).
Data as JSON: /api/errors/9b18558e01e89c32.
Report an issue: GitHub.