You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5 Web API调用AddAutoMapper报CS0121错误的版本差异原因是什么?

问题原因

这个错误并非.NET Core 2.2与.NET 5的运行时框架差异直接导致,而是你项目引用的AutoMapper.Extensions.Microsoft.DependencyInjection包版本升级带来的API变更:

  • 适配.NET Core 2.2的旧版扩展包存在无参的AddAutoMapper()重载,默认会自动扫描所有程序集查找AutoMapper的Profile配置,不会出现调用歧义
  • 适配.NET 5的新版扩展包移除了无参重载,仅保留两个参数签名:
    • AddAutoMapper(IServiceCollection, params Assembly[])
    • AddAutoMapper(IServiceCollection, params Type[])
      你调用时没有传任何参数,两个带params关键字的重载都符合匹配规则,编译器无法判断该调用哪个方法,就会抛出CS0121错误。
修复方案

你只需要明确指定要扫描Profile的程序集/类型即可,以下是两种常用写法:

  1. 扫描当前启动项目的程序集(如果你的Profile都定义在Web项目里)
services.AddAutoMapper(typeof(Startup).Assembly);
  1. 直接传入自定义Profile的类型(如果你的Profile定义在单独的类库项目里)
    假设你定义了名为CustomMappingProfile的Profile类,写法如下:
services.AddAutoMapper(typeof(CustomMappingProfile));

如果有多个分散在不同程序集的Profile,也可以传入多个程序集/类型参数:

// 扫描多个程序集
services.AddAutoMapper(typeof(Startup).Assembly, typeof(CustomMappingProfile).Assembly);

内容的提问来源于stack exchange,提问作者Rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:36:07