dotnet/BenchmarkDotNet · error · NotSupportedException
AsyncMethodBuilder {builderType.GetDisplayName()} has generi
Error message
AsyncMethodBuilder {builderType.GetDisplayName()} has generic arity greater than 1. What it means
The InProcess emitter supports AsyncMethodBuilder types with generic arity 0 or 1 only; builders with more than one generic parameter cannot be emitted.
Source
Thrown at src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/AsyncCoreEmitterBase.cs:144
{
return typeof(AsyncTaskMethodBuilder);
}
if (asyncType.IsGenericType && asyncType.GetGenericTypeDefinition() == typeof(Task<>))
{
return typeof(AsyncTaskMethodBuilder<>).MakeGenericType([asyncType.GetGenericArguments()[0]]);
}
throw new NotSupportedException($"AsyncMethodBuilderAttribute not found on type {asyncType.GetDisplayName()} from {Descriptor.DisplayInfo}");
}
static Type GetConcreteBuilderType(Type builderType, Type forReturnType)
{
if (!builderType.IsGenericTypeDefinition)
{
return builderType;
}
if (builderType.GetGenericArguments().Length != 1)
{
throw new NotSupportedException($"AsyncMethodBuilder {builderType.GetDisplayName()} has generic arity greater than 1.");
}
var resultType = forReturnType
.GetMethod(nameof(Task.GetAwaiter), BindingFlags.Public | BindingFlags.Instance)!
.ReturnType
.GetMethod(nameof(TaskAwaiter.GetResult), BindingFlags.Public | BindingFlags.Instance)!
.ReturnType;
return builderType.MakeGenericType([resultType]);
}
}
private void EmitOverhead()
{
var noUnrollMethod = EmitOverheadNoUnrollMethod();
EmitOverheadUnrollMethod(noUnrollMethod);
}
private MethodInfo EmitOverheadNoUnrollMethod()
{View on GitHub (pinned to b515068b61)
Solutions
- Use an async method builder with at most one generic type parameter (e.g. AsyncTaskMethodBuilder or AsyncTaskMethodBuilder<T>).
- If you authored a custom builder, reduce its generic arity to 0 or 1.
When it happens
Trigger: Thrown at src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/AsyncCoreEmitterBase.cs:144 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dotnet/BenchmarkDotNet@b515068b61 (2026-08-13).
Data as JSON: /api/errors/c60cbb4ce4cebc1b.
Report an issue: GitHub.