.NET 6 迁移至 .NET 7 时 AutoMapper 在 Startup.cs 中出现错误
.NET 6迁移至.NET 7时AutoMapper编译错误(CS1503)解决方法
错误提示CS1503: Argument 1: cannot convert from 'System.Reflection.Assembly' to 'System.Collections.Generic.IEnumerable<AutoMapper.Profile>',本质是AutoMapper.Extensions.Microsoft.DependencyInjection包的API变更:旧版本中接受Assembly参数的AddAutoMapper重载方法被调整,新版本要求传入IEnumerable<Profile>类型参数,直接传程序集会导致类型不匹配。
解决方法
方法1:通过配置项指定要扫描的程序集
错误代码示例:services.AddAutoMapper(Assembly.GetExecutingAssembly());修改为:
services.AddAutoMapper(cfg => { cfg.AddMaps(Assembly.GetExecutingAssembly()); });方法2:传入自定义Profile类所在的程序集(推荐)
找到你项目中继承自AutoMapper.Profile的自定义配置类(比如UserProfile),用其所在程序集作为参数:services.AddAutoMapper(typeof(UserProfile).Assembly);这种写法会让AutoMapper自动扫描该程序集中所有的Profile实现类。
额外说明
如果项目中AutoMapper.Extensions.Microsoft.DependencyInjection包版本较低,建议升级到与.NET 7兼容的最新版本(如12.x及以上),确保API与框架版本匹配。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

