wake-up-neo.com

Versuch, AutoMapper zu .NetCore1.1 hinzuzufügen - Dienste werden nicht erkannt. AddAutoMapper ()

Ich habe in meinem Projekt Automapper und AutoMapper.Extensions.Microsoft.DependencyInjection installiert. Ich habe die Zeile zu ConfigureServices in Startup.cs hinzugefügt.

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();
}

Ich bekomme immer noch eine rote Linie unter services.AddAutoMapper(). Es sagt:

Der Aufruf ist zwischen den folgenden Methoden oder Eigenschaften mehrdeutig: ServiceCollectionExtensions.AddAutoMapper (IServiceCollection, params Assembly []) und ServiceCollectionExtensions.AddAutoMapper (IServiceCollection, params Type []).

Warum passiert dies? Alle von mir gelesenen .NET Core-Add-Automapper-Handbücher zeigen dies auf diese Weise.

15
magna_nz

Ich bin auf das gleiche Problem gestoßen, also habe ich den Quellcode und die Tests zur Anleitung geprüft. Es scheint, dass Sie entweder eine Baugruppe oder einen "Markertyp" in der Baugruppe übergeben müssen, die Sie scannen möchten. Ich entschied mich für Folgendes, da sich meine Profile-Klassen in derselben Assembly befinden wie die Startup-Klasse.

services.AddAutoMapper(typeof(Startup));
13
Robert Massa

Ich bin gerade auf dieses Problem gestoßen und habe erfahren, dass Sie müssen folgendes Nuget-Paket enthalten: AutoMapper.Extensions.Microsoft.Dependencyinjection

30
Ikram Shah

Ich weiß nicht, warum das so ist, es könnte durchaus etwas mit .NET Core 1.1 zu tun haben, aber ich habe eine Problemumgehung gefunden.

Anstelle von services.AddAutoMapper() in ConfigureServices, ersetzen Sie es durch das Folgende.

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

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

Wobei MappingProfile() die Klasse ist, in der Sie Ihre CreateMap haben.

8
magna_nz

Suchen Sie dies in Nuget, können Sie auf Automap zugreifen 

AutoMapper.Extensions.Microsoft.DependencyInjection
7
SinaNasiri

Ich hatte das gleiche Problem. Um dieses Problem zu lösen, habe ich die folgenden Versionen von AutoMapper in project.csproj verwendet:

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

Stellen Sie alle Pakete wieder her und schließen Sie das Visual Studio.

1
lbegazo

Ich hatte das gleiche problem In meinem Fall war die Lösung eine Kombination der obigen Antworten:

  1. laden Sie das Nuget-Paket für Automapper -> Automapper von Jimmy Bogard herunter
  2. laden Sie das Nuget-Paket für die Automapper-Abhängigkeitsinjektion herunter -> AutoMapper.Extensions.Microsoft.DependencyInjection von Jimmy Bogard
  3. hinzufügen using Automapper; in der Datei Startup.cs

Jetzt service.AddAutoMapper sollte korrekt funktionieren. Sie können jetzt den Automapper nach Ihren Wünschen initialisieren.

0
CristisS

Ich hatte das gleiche Problem (in .NET Core 2.2, Visual Studio Code 1.34.0, Ubuntu OS), obwohl ich AutoMapper package (v8.1.0) und AutoMapper.Extensions.Microsoft) installiert hatte .Dependencyinjection package (v6.1.0).

Das Problem wurde behoben, indem die Version der Pakete in project.csproj wie folgt geändert wurde:

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

Irgendwie sieht es aufgrund der Fehlanpassung der Paketversion aus.

0
Jatala