Подтвердить что ты не робот

Попытка добавить AutoMapper в .NetCore1.1 - не распознавать services.AddAutoMapper()

Я установил Automapper и AutoMapper.Extensions.Microsoft.DependencyInjection в свой проект. Я добавил строку в ConfigureServices в Startup.cs.

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();
    services.AddDbContext<MusicDbContext>(opts => opts.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    services.AddSingleton<IRepository, MusicRepository>();
    services.AddAutoMapper();
}

Я все еще получаю красную строку под services.AddAutoMapper(). В нем говорится:

Вызов неоднозначен между следующими методами или свойствами: ServiceCollectionExtensions.AddAutoMapper(IServiceCollection, params Assembly []) и ServiceCollectionExtensions.AddAutoMapper(IServiceCollection, params Type [])

Почему это происходит? Все .NET Core добавили путеводители Automapper, которые я прочитал, чтобы сделать это таким образом.

4b9b3361

Ответ 1

Я столкнулся с той же проблемой, поэтому проверил исходный код и тесты для руководства. Кажется, вам нужно передать либо сборку, либо "маркерный тип" внутри сборки, которую вы хотите отсканировать. Я пошел на следующее, поскольку мои классы Profile находятся в той же сборке, что и класс Startup.

services.AddAutoMapper(typeof(Startup));

Ответ 2

Я просто столкнулся с этой проблемой и узнал, что Вам нужно включить следующий пакет Nuget AutoMapper.Extensions.Microsoft.Dependencyinjection

Ответ 3

Не уверен, почему это происходит, это может быть связано с .NET Core 1.1, но я нашел обходное решение.

Вместо того, чтобы делать services.AddAutoMapper() в ConfigureServices, замените его ниже.

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

            var mapper = config.CreateMapper();
            services.AddSingleton(mapper);

Где MappingProfile() - класс, в котором у вас есть CreateMap.

Ответ 4

Поиск это в Nuget вы можете получить доступ к Autop

AutoMapper.Extensions.Microsoft.DependencyInjection

Ответ 5

У меня была та же проблема. Чтобы решить эту проблему, я использовал следующие версии AutoMapper в project.csproj:

AutoMapper Version="6.0.1"
AutoMapper.Extensions.Microsoft.DependencyInjection Version="1.2.0"

Восстановите все пакеты и, наконец, закройте и откройте визуальную студию.

Ответ 6

У меня была такая же проблема (в .NET 2.2 Ядра, Visual кодекса Студия 1.34.0, Ubuntu OS) несмотря на установленный AutoMapper пакет (v8.1.0) и пакет AutoMapper.Extensions.Microsoft.Dependencyinjection (v6.1.0).

Проблема была решена путем изменения версии пакетов в project.csproj следующим образом:

<PackageReference Include="AutoMapper" Version="8.0.0"/>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="6.0.0"/>

Так или иначе это выглядит из-за несоответствия версии пакета.

Ответ 7

У меня такая же проблема. В моем случае решение было комбинацией ответов выше:

  1. скачать пакет Nuget для Automapper → Automapper от Джимми Богарда
  2. загрузите пакет Nuget для внедрения зависимостей Automapper → AutoMapper.Extensions.Microsoft.DependencyInjection от Jimmy Bogard
  3. добавить using Automapper; в файле Startup.cs

Теперь service.AddAutoMapper должен работать правильно. Теперь вы можете инициализировать Automapper по своему вкусу.

Ответ 8

Все, что вам нужно сделать, это добавить с помощью AutoMapper; вверху файла Startup.cs. Лучшее из удачи!!!!