Asp.net-Mvc

試圖將 AutoMapper 添加到 Asp.net Core 2?

  • May 18, 2018

不久前我從事過一個 asp.net core 1.1 項目,並在 projetc AutoMapper 中使用。

在 asp.net core 1.1 中,我添加services.AddAutoMapper()了啟動文件:

asp.net core 1.1 中的啟動文件:

   public void ConfigureServices(IServiceCollection services)
   {
       //Some Code

       services.AddMvc();
       services.AddAutoMapper();
   }

而且我很容易在 Controller 中使用 AutoMapper。

控制器 :

public async Task<IActionResult> AddEditBook(AddEditBookViewModel model)
{
   Book bookmodel = AutoMapper.Mapper.Map<AddEditBookViewModel, Book>(model);
   context.books.Add(bookmodel);
   context.SaveChanges();
}

一切都很好。但是我目前正在開發一個 Asp.net Core 2 項目,並且services.AddAutoMapper()在 sturtap 文件中出現錯誤。

錯誤 CS0121 以下方法或屬性之間的呼叫不明確:“ServiceCollectionExtensions.AddAutoMapper(IServiceCollection, params Assembly[])”和“ServiceCollectionExtensions.AddAutoMapper(IServiceCollection, params Type[])”

這個錯誤的原因是什麼?此外,services.AddAutoMapper在 asp.net core 2 中有一些參數。我應該向這個參數發送什麼?

您可能更新了 ASP.NET Core 依賴項,但仍使用過時的AutoMapper.Extensions.Microsoft.DependencyInjection包。

對於 ASP.NET Core,您至少需要3.0.1來自 https://www.nuget.org/packages/AutoMapper.Extensions.Microsoft.DependencyInjection/3.0.1的版本

其中引用 AutoMapper 6.1.1 或更高版本。

自動映射器 (> = 6.1.1)

Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.0.0)

Microsoft.Extensions.DependencyModel (>= 2.0.0)

由於1.1.0 和 2.0之間發生了重大更改,較舊的包依賴於Microsoft.Extensions.DependencyInjection.Abstractions 1.1.0ASP.NET Core 並且不能與 ASP.NET Core 一起使用Microsoft.Extensions.DependencyInjection.Abstractions

如果您使用的是 AspNet Core 2.2 和 AutoMapper.Extensions.Microsoft.DependencyInjection v6.1 您需要在啟動文件中使用

services.AddAutoMapper(typeof(Startup));

引用自:https://stackoverflow.com/questions/50411188