尝试将AutoMapper添加到.NetCore1.1 - 无法识别services.AddAutoMapper()

mag*_*_nz 24 .net automapper asp.net-core-mvc .net-core asp.net-core

我已安装AutomapperAutoMapper.Extensions.Microsoft.DependencyInjection进入我的项目.我已将该行添加到ConfigureServicesStartup.cs.

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
    // . . .
    services.AddAutoMapper();
}
Run Code Online (Sandbox Code Playgroud)

我还是得到一条红线services.AddAutoMapper().它说:

以下方法或属性之间的调用是不明确的:ServiceCollectionExtensions.AddAutoMapper(IServiceCollection,params Assembly [])和ServiceCollectionExtensions.AddAutoMapper(IServiceCollection,params Type [])

为什么会这样?所有的.NET Core都添加了我读过的自动提示指南,以这种方式实现.

Ikr*_*hah 41

我刚遇到这个问题并且知道你需要包含以下Nuget包AutoMapper.Extensions.Microsoft.Dependencyinjection

  • 问题表明他们已经包含了这个 Nuget 包。 (2认同)

Rob*_*ssa 20

我遇到了同样的问题,所以检查了源代码并测试了指导.您似乎需要在要扫描的程序集中传递程序集或"标记类型".因为我的Profile班级和班级在同一个集会中,所以我选择了以下内容Startup.

services.AddAutoMapper(typeof(Startup));
Run Code Online (Sandbox Code Playgroud)

  • 正如Ikram Shah的回答所指出的......添加nuget pkg`autobopper.extensions.microsoft.dependencyinjection`是在`Startup.cs`中配置服务时解决扩展方法`AddAutoMapper()`的答案,例如`services.AddAutoMapper() ;` (4认同)
  • `typeof(ATypeInTargetAssembly)` (2认同)

mag*_*_nz 11

不知道为什么会这样,它很可能与某些事情有关,.NET Core 1.1但我找到了一个解决方法.

而不是做的services.AddAutoMapper()ConfigureServices,与下面替换它.

var config = new AutoMapper.MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MappingProfile());
            });

            var mapper = config.CreateMapper();
            services.AddSingleton(mapper);
Run Code Online (Sandbox Code Playgroud)

MappingProfile()你拥有自己的班级在哪里CreateMap.


小智 7

在nuget中搜索,您可以访问automap

AutoMapper.Extensions.Microsoft.DependencyInjection
Run Code Online (Sandbox Code Playgroud)