NuGet Package Manager: Für 'AutoMapper' ist bereits eine Abhängigkeit für 'Microsoft.CSharp' definiert.


76

Ich versuche, AutoMapper als Abhängigkeit zu einem Projekt mit NuGet unter Visual Studio Premium 2012 hinzuzufügen, aber es schlägt fehl.

Es sagt:

Operation fehlgeschlagen
'AutoMapper' hat bereits eine Abhängigkeit für 'Microsoft.CSharp' definiert.

Ich kann andere Abhängigkeiten hinzufügen.

Ich verwende die letzte Version des Paketmanagers für VS 2012:

NuGet Package Manager 2.8.60318.667

Irgendwelche Ideen, was soll ich überprüfen?


1
Mögliches Duplikat des Automapper Nuget-Pakets fehlgeschlagen
Venky

@ Venky der Unterschied zwischen dieser und meiner Frage ist, dass ich die letzte Version von Nugget Package Manager verwende
Pomber

Antworten:


94

Das Problem ist, dass Ihr NuGet Package Manager zu alt ist. Sie benötigen NuGet 2.12, da dies die neueren .NETStandard-Frameworks unterstützt, die das AutoMapper 5.0.1 NuGet-Paket verwendet.

Der AutoMapper verfügt über eine Gruppenabhängigkeit, die ein Zielframework von .NETStandard angibt. Da Ihre Version von NuGet Package Manager zu alt ist, erkennt sie dieses Zielframework nicht und konvertiert es in ein unbekanntes Zielframework. Sie erhalten doppelte Frameworks, da .NETStandard in diesem NuGet-Paket einige Male verwendet wird. Dies verursacht den Fehler:

'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'

Leider ist NuGet 2.12 nicht für Visual Studio 2012 verfügbar, aber für Visual Studio 2013.

Entweder müssen Sie auf Visual Studio 2013 oder höher aktualisieren, oder Sie müssen das ältere AutoMapper NuGet-Paket verwenden, das .NETStandard nicht unterstützt.


1
Danke Matt, ich denke du
meintest

Aus Gründen, die über meine Macht hinausgehen, bleibe ich bei VS 2012, also werde ich bei der vorherigen Version bleiben
Pomber

41

Scheint ein Problem mit der aktuellen Version von Automapper zu sein:

AutoMapper 5.0.0 Dienstag, 28. Juni 2016

Ich habe es mit der vorherigen Version versucht und es funktioniert:

PM> Install-Package AutoMapper -Verbose
Install-Package : 'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'.
At line:1 char:16
+ Install-Package <<<<  AutoMapper -Verbose
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

PM> Install-Package AutoMapper -Version 4.2.1
Installing 'AutoMapper 4.2.1'.
Successfully installed 'AutoMapper 4.2.1'.

Wenn Sie NuGet Package Manager nicht aktualisieren können, lautet die Antwort:

PM> Install-Package AutoMapper -Version 4.2.1

1
Ich hatte dieses Problem und erhielt genau diesen Fehler von einer VSTS Build-Aufgabe für NuGet Packager. Ich habe auf 4.2.1 heruntergestuft und das hat den Fehler behoben.
AC4

Vor dem Downgrade habe ich versucht, auf 5.0.2 zu aktualisieren, aber es gab mir immer noch diesen Fehler.
AC4

Ich erhalte Folgendes: Version '4.2.1' des Pakets 'AutoMapper' konnte nicht gefunden werden. In Zeile: 1 Zeichen: 1 + Install-Package AutoMapper -Version 4.2.1
Joe

Die richtige Antwort ist die höher gewählte von Matt Ward. Diese Lösung funktioniert, aber es ist eine sehr kurzfristige Lösung ...
MPritchard

@ MPchchard Matts Lösung funktioniert nicht für VS2012, was eines meiner Probleme war
Pomber

30

Am Ende musste ich NuGet.exe aktualisieren, das in der Lösung enthalten war, um NuGet-Pakete erstellen zu können, indem ich Folgendes ausführte:

nuget.exe update -self


1
Das hat das Problem für mich behoben. Dies sollte die richtige Antwort sein, da ein Herabstufen von AutoMapper keine richtige Antwort ist.
Raffaeu

Abgesehen davon, dass dies heute noch mit Nuget 4.5.1 geschieht. Es scheint ein spezifisches Problem für AutoMapper zu sein
ebol2000

26

Ich hatte das gleiche Problem auf VS2013. Ich musste auf VS2013 Update 5 aktualisieren und die neueste Nuget-Distribution für VS2013 unter https://dist.nuget.org/visualstudio-2013-vsix/v2.12.0/NuGet.Tools.vsix herunterladen

Danach habe ich Visual Studio neu gestartet. Danach konnte ich das Automapper 5.0.2-Paket verwenden


1
Hat auch für mich gearbeitet. Danke, dass du meinen Tag gerettet hast.
Sameer Awate

3
Hat für mich gearbeitet! Vielen Dank. (Ich musste VS nach der Installation der neuen Version von Nuget neu starten)
Daniel Silva

17

Gehen Sie zu Visual Studio> Extras> Erweiterung und Updates

Suchen Sie nach Updates im linken Akkordeonmenü. Gehen Sie zur Visual Studio-Galerie.

Sie finden ein Update für Nuget.

Aktualisieren Sie das Nuget-Paket und versuchen Sie, das Projekt zu installieren oder zu erstellen.

Danke, GT


Arbeitete für mich :)
Pandiyan Cool

2

Eine andere Problemumgehung, wenn Sie mit VS2012 und der alten Nuget-Version nicht weiterkommen:

  • Suchen Sie den Cache-Ordner des Nuget Package Managers von VS 2012 (mit Tools- Options- Nuget Package Manager).
  • Öffnen Sie AutoMapper.5.x.x.nupkgmit Ihrem bevorzugten Zip-Tool
  • Ändern Sie die Datei AutoMapper.nuspec- Ich habe einfach alle Abhängigkeiten außer gelöscht.NETFramework4.5
  • Fügen Sie den Cache-Ordner als Nuget-Quelle hinzu (auch in Tools- Options- Nuget Package Manager)
  • Installieren Sie Automapper entweder über die Konsole oder die GUI. Wählen Sie jedoch zuerst den neu hinzugefügten Cache-Ordner als Paketquelle aus.

Natürlich muss wahrscheinlich auch die nächste Version von Automapper angepasst werden, um sie zu installieren.


0

Dies scheint eine Nichtübereinstimmung zwischen der vom Automapper-Paket verwendeten .NET-Version und Ihrem Projekt zu sein. Können Sie die von Ihrem Projekt verwendete .NET-Version bestätigen?


0

Automapper 6.0.2 - Nuget 2.8.8 gibt diesen Fehler aus. Muss auf 3.4.4 aktualisiert werden, damit dies funktioniert.


0

Sowohl CSharp als auch AutoMapper wurden entfernt. Installierte zuerst CSharp (4.0.0.0) und fügte dann Automapper (6.1.1.0) hinzu. Dies löste das Problem für mich.


0

Ich habe genau dieses Problem beim Öffnen eines Projekts mit Visual Studio 2010 beobachtet.

Nach dem Öffnen mit VS2017 konnte ich AutoMapper ohne Fehler installieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.