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

Mapster生成目录配置:让映射器类与接口同目录生成

让Mapster生成的映射器类和接口待在同一个目录的解决办法

问题说明

项目按实体划分独立文件夹存储mapper接口,但Mapster生成的映射器类默认跑到上级目录,需要实现:不管文件夹名称是什么,生成的映射器类都和对应接口处于同一目录。

当前配置(已尝试调整但无效)

<ItemGroup>
    <Generated Include="**/*.g.cs" />
    <!--清理生成文件命令:dotnet msbuild -t:CleanGenerated-->
</ItemGroup>
<Target Name="CleanGenerated" BeforeTargets="build">
    <Delete Files="@(Generated)" />
</Target>
<Target Name="Mapster" AfterTargets="AfterBuild">
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet tool restore" />
    <!--<Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster model -a \"$(TargetDir)$(ProjectName).dll\"" />
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster extension -a \"$(TargetDir)$(ProjectName).dll\"" />-->
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster mapper -a \"$(TargetDir)$(ProjectName).dll\"" />
</Target>

已尝试的操作:

  • 调整<Generated Include>属性值
  • 使用Mapster.Tool的-n、-b、-o选项,均未解决问题

解决方案

Mapster.Tool默认不会自动匹配接口的子目录结构,需结合配置文件和MSBuild逻辑实现需求,步骤如下:

1. 创建Mapster配置文件

在项目根目录新建mapster.json文件,配置生成规则让输出路径匹配接口所在目录:

{
  "Mapper": {
    "GenerateMethods": "All",
    "Namespace": "{Namespace}",
    "OutputPath": "{Directory}"
  }
}

其中{Directory}会自动替换为接口所在的目录路径,确保生成的映射器类直接输出到接口所在文件夹。

2. 修改MSBuild Target配置

更新项目的MSBuild目标,添加配置文件引用,确保生成逻辑读取我们定义的规则:

<ItemGroup>
    <Generated Include="**/*.g.cs" />
</ItemGroup>
<Target Name="CleanGenerated" BeforeTargets="Build">
    <Delete Files="@(Generated)" />
</Target>
<Target Name="MapsterGenerate" AfterTargets="AfterBuild">
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet tool restore" />
    <Exec WorkingDirectory="$(ProjectDir)" Command="dotnet mapster mapper -a &quot;$(TargetDir)$(ProjectName).dll&quot; -c mapster.json" />
</Target>

关键是新增-c mapster.json参数,指定使用我们创建的配置文件。

3. 验证生成结果

清理项目后重新构建,Mapster会将映射器类直接生成到对应接口所在的目录中。

若仍未生效,检查以下几点:

  • 接口的命名空间需与目录结构一致(Mapster通过命名空间推导目录路径)
  • 确认mapster.json放置在项目根目录,路径无错误
  • 先执行清理命令再构建,避免旧生成文件缓存干扰

内容的提问来源于stack exchange,提问作者Дед

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:46:20