2016-07-07 3 views
69

Я пытаюсь добавить AutoMapper в качестве зависимости от проекта с использованием NuGet на Visual Studio Premium 2012, но он терпит неудачу.Менеджер пакетов NuGet: «AutoMapper» уже имеет зависимость, определенную для «Microsoft.CSharp»

Он говорит:

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

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

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

NuGet Package Manager 2.8.60318.667

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

+1

Возможный дубликат [Пакет автопилота Nuget с ошибкой] (http://stackoverflow.com/questions/38186799/automapper-nuget-package-failed) – Venky

+0

@Venky Разница между этим вопросом и моим заключается в том, что я использую последняя версия диспетчера пакетов nugget – pomber

ответ

40

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

AutoMapper 5.0.0 Tuesday, June 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 
+1

У меня была эта проблема, и я получал эту точную ошибку из задачи VSTS Build для NuGet Packager. Я понизил рейтинг до 4.2.1 и зафиксировал ошибку. – AC4

+0

Прежде, чем я отказался, я попытался обновить до 5.0.2, и он все еще дал мне эту ошибку. – AC4

+0

Я получаю это: Не могу найти версию «4.2.1» пакета «AutoMapper». В строке: 1 char: 1 + Install-Package AutoMapper -Version 4.2.1 – Joe

0

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

+0

.NET Framework 4.5 – pomber

83

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

AutoMapper имеет групповую зависимость, которая задает целевую структуру .NETStandard. Поскольку ваша версия NuGet Package Manager слишком стар, она не распознает эту целевую структуру и преобразует ее в неизвестную целевую структуру, и вы получаете дубликаты фреймворков, так как там .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.

+1

Спасибо, Мэтт, я думаю, вы имели в виду, что «не доступно» для VS 2012 – pomber

+0

По причинам, не зависящим от моей власти, я застрял с VS 2012, поэтому останусь с предыдущей версией – pomber

1

Иным обходной путь, если вы застряли с VS2012 и старой версии NuGet:

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

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

21

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

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

+2

Это сработало для меня на VS2013 Update 5. Спасибо ! – Tom

+1

Работал для меня тоже. Спасибо, что спасли мой день. –

+2

Работал для меня! Благодарю. (Мне нужно было перезапустить VS после установки новой версии Nuget) –

27

Я в конечном итоге необходимости обновления NuGet. ехе, который был включен в растворе, чтобы иметь возможность создавать пакеты NuGet, запустив:

nuget.exe update -self

+1

Это исправило проблему для меня. Это должен быть правильный ответ, потому что фактическое понижение AutoMapper не является правильным ответом. – Raffaeu

+0

За исключением того, что это происходит сегодня, используя Nuget 4.5.1. Это, по-видимому, проблема, связанная с AutoMapper – ebol2000

15

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

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

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

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

Спасибо, GT

+0

Работал для меня :) –

+0

работал как шарм, спасибо –

0

Automapper 6.0.2 - 2.8.8 NuGet дает эту ошибку. Необходимо обновить до 3.4.4, чтобы получить эту работу.

0

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

Смежные вопросы