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

AutoMapper报错:MapperConfiguration不存在接受1个参数的构造函数

AutoMapper报错:MapperConfiguration不存在接受1个参数的构造函数

这个报错的核心原因是你的代码写法和当前安装的AutoMapper版本不匹配,AutoMapper在不同版本中调整了配置API的设计,咱们一步步来解决:

一、问题根源拆解

你遇到的CS1729错误,大概率是因为安装了AutoMapper 9.0以上的新版本,但代码沿用了旧版的配置逻辑;或者反过来装了旧版包却用了新版语法(前者出现的频率更高)。

二、两种可选解决方案

方案1:调整代码适配新版AutoMapper(推荐)

从AutoMapper 9.0开始,部分配置属性已经改为扩展方法调用,同时要确保你正确引用了AutoMapper命名空间。调整后的代码如下:

// 记得在文件顶部添加命名空间引用
using AutoMapper;

var config = new MapperConfiguration(cfg => 
{
    // 新版中这些配置项是扩展方法,需要用调用的方式
    cfg.AllowNullDestinationValues(true);
    cfg.AllowNullCollections(true);
    cfg.AddProfile(new AutomapperProfiles());
});

如果是AutoMapper 12+的最新版本,也可以用更清晰的链式写法:

var config = new MapperConfigurationBuilder()
    .AllowNullDestinationValues(true)
    .AllowNullCollections(true)
    .AddProfile(new AutomapperProfiles())
    .CreateMapperConfiguration();

方案2:降级AutoMapper版本匹配原有代码

如果你不想修改现有代码,可以卸载当前版本的AutoMapper,安装8.0.x系列的旧版本(这是最后一个完全支持旧版属性赋值写法的大版本):

  • 打开NuGet包管理器,找到已安装的AutoMapper,点击卸载
  • 搜索AutoMapper,筛选版本为8.0.x(比如8.0.1)进行安装
  • 安装完成后,你的原有代码就能正常编译运行

三、额外注意点

  • 确保项目只引用了官方的AutoMapper核心包,不要只装扩展包(比如AutoMapper.Extensions.Microsoft.DependencyInjection)却遗漏了核心的AutoMapper包
  • 如果你在ASP.NET Core等依赖注入环境中使用,推荐直接用AutoMapper.Extensions.Microsoft.DependencyInjection,通过services.AddAutoMapper(assembly => assembly.GetType<AutomapperProfiles>())这种方式配置,能彻底避开手动实例化的版本适配问题

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 07:08:08