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

时间:2017-03-21 00:06:50

标签: .net asp.net-core asp.net-core-mvc automapper .net-core

我已将AutoMapper.Extensions.Microsoft.DependencyInjectionConfigureServices安装到我的项目中。我已将该行添加到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()

我在<% @cities.each do |city| %> <%= check_box_tag "cities[]", city.id %> <%= city.city_name %> <% end %> 下面仍然有一条红线。它说:

  

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

为什么会这样?所有的.NET Core都添加了自动阅读器指南,我已经阅读过show来这样做。

10 个答案:

答案 0 :(得分:34)

我刚遇到这个问题就知道了 您需要包含以下Nuget包 AutoMapper.Extensions.Microsoft.Dependencyinjection

答案 1 :(得分:14)

我遇到了同样的问题,所以检查了sourcecode and tests以获得指导。看来你需要传递一个程序集或一个&#34;标记类型&#34;在您想要扫描的组件内。我选择了以下内容,因为我的Profile类与Startup类位于同一个程序集中。

services.AddAutoMapper(typeof(Startup));

答案 2 :(得分:10)

不确定为什么会发生这种情况,很可能与.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

答案 3 :(得分:7)

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

AutoMapper.Extensions.Microsoft.DependencyInjection

答案 4 :(得分:1)

我遇到了同样的问题。为了解决这个问题,我在project.csproj中使用了以下版本的AutoMapper:

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

恢复所有包,最后关闭并打开visual studio。

答案 5 :(得分:0)

尽管安装了 AutoMapper 软件包(v8.1.0)和 AutoMapper.Extensions,但我遇到了相同的问题(在.NET Core 2.2,Visual Studio Code 1.34.0,Ubuntu OS中)。 .Microsoft.Dependencyinjection 软件包(v6.1.0)。

通过如下更改project.csproj中的软件包版本来解决该问题:

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

由于软件包版本不匹配,因此看起来有点像。

答案 6 :(得分:0)

我有同样的问题。就我而言,解决方案是上述答案的组合:

  1. 下载Jimmy的用于Automapper的Nuget软件包-> Automapper 博加德
  2. 下载用于自动映射器依赖项注入的Nuget包-> Jimmy的 AutoMapper.Extensions.Microsoft.DependencyInjection 博加德
  3. 在Startup.cs文件中添加using Automapper;

现在service.AddAutoMapper应该可以正常工作。现在,您可以根据自己的喜好初始化Automapper。

答案 7 :(得分:0)

为automapper.extensions.microsoft.dependencyinjection添加Nuget程序包 最新的稳定版9

答案 8 :(得分:0)

安装软件包:

Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection -Version 7.0.0

坚果:
https://www.nuget.org/packages/AutoMapper.Extensions.Microsoft.DependencyInjection/

答案 9 :(得分:-1)

您需要做的就是在 Startup.cs 文件的顶部使用AutoMapper添加 ; 。最好的运气!!!!