it-roy-ru.com

Диспетчер пакетов NuGet: "AutoMapper" уже имеет зависимость, определенную для "Microsoft.CSharp"

Я пытаюсь добавить AutoMapper в качестве зависимости к проекту с использованием NuGet в Visual Studio Premium 2012, но это не удается.

Это говорит: 

Операция не удалась
«AutoMapper» уже имеет зависимость, определенную для 'Microsoft.CSharp.

Я могу добавить другие зависимости.

Я использую последнюю версию менеджера пакетов для VS 2012:

Менеджер пакетов NuGet 2.8.60318.667

Любые идеи, что я должен проверить?

73
pomber

Кажется, проблема с текущей версией automapper:

AutoMapper 5.0.0 вторник, 28 июня 2016 г.

Я пытался с предыдущей версией, и она работает:

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'.

Итак, если вы не можете обновить диспетчер пакетов NuGet, ответ:

PM> Install-Package AutoMapper -Version 4.2.1
41
pomber

Проблема в том, что ваш менеджер пакетов NuGet слишком стар. Вам нужен NuGet 2.12 , поскольку он поддерживает более новые платформы .NETStandard, которые использует пакет NuGet в AutoMapper 5.0.1.

AutoMapper имеет групповую зависимость, которая определяет целевую платформу .NETStandard. Поскольку ваша версия диспетчера пакетов NuGet слишком старая, она не распознает эту целевую платформу и преобразует ее в неизвестную целевую платформу, и в результате вы получаете дублированные структуры, поскольку там .NETStandard используется несколько раз в этом пакете NuGet. Это вызывает ошибку:

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

К сожалению, NuGet 2.12 недоступен для Visual Studio 2012, но доступен для Visual Studio 2013.

Так что вам нужно либо обновить до Visual Studio 2013 или выше, либо вам придется использовать более старый пакет AutoMapper NuGet, который не поддерживает .NETStandard.

94
Matt Ward

Мне пришлось обновить NuGet.exe, который был включен в решение, чтобы иметь возможность создавать пакеты NuGet, выполнив:

nuget.exe update -self

30
bkaid

У меня была такая же проблема на VS2013. Мне пришлось обновить до VS2013 Update 5 и получить последний дистрибутив nuget для VS2013 по адресу https://dist.nuget.org/visualstudio-2013-vsix/v2.12.0/NuGet.Tools.vsix

как только это было сделано, я смог использовать пакет Automapper 5.0.2

24
Mike

Перейдите в Visual Studio> Инструменты> Расширение и обновления

Найти обновления в левом меню аккордеона, перейдите в галерею Visual Studio.

Вы найдете обновление для Nuget.

Обновите пакет nuget и попробуйте установить или собрать проект.

Спасибо, GT

16
Ganesh Todkar

Другой обходной путь, если вы застряли с VS2012 и старой версией Nuget:

  • Найдите папку Cache диспетчера пакетов Nuget VS 2012 (с Tools - Options - Nuget Package Manager)
  • Откройте AutoMapper.5.x.x.nupkg с вашим любимым Zip Tool
  • Изменить файл AutoMapper.nuspec - я просто удалил все зависимости, кроме .NETFramework4.5
  • Добавьте папку кеша в качестве источника Nuget (также в Tools - Options - Nuget Package Manager)
  • Установите Automapper либо с консоли, либо с графическим интерфейсом, но убедитесь, что сначала выбрали только что добавленную папку кэша в качестве источника пакета.

Конечно, следующая версия Automapper, вероятно, также должна быть адаптирована для ее установки.

1
marapet

Удалены как CSharp, так и AutoMapper. Сначала установил CSharp (4.0.0.0), а затем добавил Automapper (6.1.1.0). Это решило проблему для меня. 

0
rjose

Это выглядит как несоответствие между версией .NET, используемой пакетом Automapper, и вашим проектом. Можете ли вы подтвердить версию .NET, которую использует ваш проект?

0
JTW

Именно эту проблему я наблюдал при открытии проекта в Visual Studio 2010.

После открытия с VS2017, я смог установить AutoMapper без каких-либо ошибок.

0
El-Ahrairah

Automapper 6.0.2 - nuget 2.8.8 выдает эту ошибку. Нужно обновить до 3.4.4, чтобы это заработало.

0
Leszek Repie