Upgrading AutoMapper 15 to 16
Review needed15.1.3 → 16.2.0Security2New5Changed2Fixed6Other9
SecurityHigh · CVSS 7.5Fixes uncontrolled recursion on cyclic or self-referential object graphs that could cause stack exhaustion and denial of service.GHSA-rvv3-g6hj-g44x · CVE-2026-32933 ↗
Review neededUpgrade verdict
2 changed defaults and 2 security fixes.
In plain terms
- Mapping certain looping object structures could crash the application; this release fixes that.
- Packages are now signed, so you can verify they really come from Lucky Penny Software and have not been altered.
Must act 2 items need code or config changes
Target frameworks requirement changed in 16.0.0-beta-1: .NETStandard2.0, net8.0, net9.0 → .NETFramework4.7.1, .NETStandard2.0, net10.0, net8.0, net9.0.
What you must change
Security2
Fixes uncontrolled recursion on cyclic or self-referential object graphs that could cause stack exhaustion and denial of service.
High · CVSS 7.5Introduces package signing so packages can be validated as published by Lucky Penny Software and not tampered with.
API changes
Generated by DepDelta from published .NET assemblies. Not mixed with prose notes.
- added:
interface ICondition<TSource, TDestination, TMember> - added:
interface IDestinationFactory<TSource, TDestination> - added:
interface IPreCondition<TSource, TDestination> - added:
method ICondition.Evaluate(TSource source, TDestination destination, TMember sourceMember, TMember destMember, ResolutionContext context): bool - added:
method IDestinationFactory.Construct(TSource source, ResolutionContext context): TDestination - added:
method IMappingExpressionBase.ConstructUsing(Type objectConstructorType): void - added:
method IMappingExpressionBase.ConstructUsing<TConstructor>(): TMappingExpression - added:
method IMemberConfigurationExpression.Condition(Type conditionType): void - added:
method IMemberConfigurationExpression.Condition<TCondition>(): void - added:
method IMemberConfigurationExpression.PreCondition(Type preConditionType): void - added:
method IMemberConfigurationExpression.PreCondition<TCondition>(): void - added:
method IPreCondition.Evaluate(TSource source, TDestination destination, ResolutionContext context): bool - added:
method TypeMap.ConstructUsingObjectConstructor(Type objectConstructorType): void - added:
property IProfileConfiguration.PolymorphicProjectionsEnabled: bool? { get; } - added:
property IProfileExpression.PolymorphicProjectionsEnabled: bool? { get; set; } - added:
property Profile.PolymorphicProjectionsEnabled: bool? { get; set; } - added:
property ProfileMap.PolymorphicProjectionsEnabled: bool { get; }
- added:
method MappingExpressionBase.ConstructUsing(Type objectConstructorType): void - added:
method MappingExpressionBase.ConstructUsing<TConstructor>(): TMappingExpression - added:
method MemberConfigurationExpression.Condition(Type conditionType): void - added:
method MemberConfigurationExpression.Condition<TCondition>(): void - added:
method MemberConfigurationExpression.PreCondition(Type preConditionType): void - added:
method MemberConfigurationExpression.PreCondition<TCondition>(): void - added:
protected method MemberConfigurationExpression.ConditionCore(Expression<Func<TSource, TDestination, TMember, TMember, ResolutionContext, bool>> expr): void - added:
protected method MemberConfigurationExpression.CreateConditionExpression(Type conditionType): Expression<Func<TSource, TDestination, TMember, TMember, ResolutionContext, bool>> - added:
protected method MemberConfigurationExpression.CreatePreConditionExpression(Type conditionType): Expression<Func<TSource, TDestination, ResolutionContext, bool>> - added:
protected method MemberConfigurationExpression.PreConditionCore(Expression<Func<TSource, TDestination, ResolutionContext, bool>> expr): void
- added:
property IGlobalConfiguration.PolymorphicProjectionsEnabled: bool { get; }