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.
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));
Ich bin gerade auf dieses Problem gestoßen und habe erfahren, dass Sie müssen folgendes Nuget-Paket enthalten: AutoMapper.Extensions.Microsoft.Dependencyinjection
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.
Suchen Sie dies in Nuget, können Sie auf Automap zugreifen
AutoMapper.Extensions.Microsoft.DependencyInjection
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.
Ich hatte das gleiche problem In meinem Fall war die Lösung eine Kombination der obigen Antworten:
using Automapper;
in der Datei Startup.csJetzt service.AddAutoMapper
sollte korrekt funktionieren. Sie können jetzt den Automapper nach Ihren Wünschen initialisieren.
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.