Попытка добавить 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, которые я прочитал, чтобы сделать это таким образом.
Ответы
Ответ 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
У меня такая же проблема. В моем случае решение было комбинацией ответов выше:
- скачать пакет Nuget для Automapper → Automapper от Джимми Богарда
- загрузите пакет Nuget для внедрения зависимостей Automapper → AutoMapper.Extensions.Microsoft.DependencyInjection от Jimmy Bogard
- добавить
using Automapper;
в файле Startup.cs
Теперь service.AddAutoMapper
должен работать правильно. Теперь вы можете инициализировать Automapper по своему вкусу.
Ответ 8
Все, что вам нужно сделать, это добавить с помощью AutoMapper; вверху файла Startup.cs. Лучшее из удачи!!!!