2016-07-07 66 views
69

我想在Visual Studio Premium 2012上使用NuGet將AutoMapper作爲依賴添加到項目中,但它失敗。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

可能重複的[Automapper Nuget包失敗](http://stackoverflow.com/questions/38186799/automapper-nuget-package-failed) – Venky

+0

@Venky這個問題和我的區別是,我使用最後一個版本的塊金程序包管理器 – 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

我有這個問題,並且從NuGet Packager的VSTS構建任務中得到了這個確切的錯誤。我降級到4.2.1,並修復了錯誤。 – AC4

+0

在我降級之前,我嘗試升級到5.0.2,但它仍然給我那個錯誤。 – AC4

+0

我得到這個:無法找到包'AutoMapper'的版本'4.2.1'。行:1個字符:1 +安裝包AutoMapper - 版本4.2.1 – Joe

0

這看起來像是由Automapper軟件包和您的項目使用的.NET版本之間的不匹配。你能否確認你的項目正在使用的.NET版本?

+0

.NET Framework 4.5 – pomber

83

問題是你的NuGet Package Manager太舊了。您需要NuGet 2.12,因爲它支持AutoMapper 5.0.1 NuGet包使用的較新的.NETStandard框架。

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年

因此,無論您需要在2013年或以上更新到Visual Studio,否則你會必須使用不支持.NETStandard的舊版AutoMapper NuGet包。

+1

感謝馬特,我認爲你的意思是「不可用」的VS 2012 – pomber

+0

由於原因超越我的力量我堅持VS 2012,所以我會留在previos版本 – pomber

1

的其他解決辦法,如果你堅持用VS2012和舊的NuGet版本:

  • 查找VS 2012的NuGet包管理器的緩存文件夾(與Tools - Options - Nuget Package Manager
  • 打開AutoMapper.5.x.x.nupkg與你最喜歡的zip工具
  • 修改文件AutoMapper.nuspec - 我只是刪除了所有的依賴,除了.NETFramework4.5
  • 添加緩存文件夾一個Nuget源代碼(同樣在Tools-Options-Nuget Package Manager
  • 安裝Automapper與控制檯或GUI安裝但確保首先選擇新添加的緩存文件夾作爲包源。

當然,Automapper的下一個版本也可能需要進行調整才能安裝它。

21

我在VS2013上遇到同樣的問題。我不得不更新到VS2013更新5,並獲得VS2013最新的NuGet發行在 https://dist.nuget.org/visualstudio-2013-vsix/v2.12.0/NuGet.Tools.vsix

一旦做我能使用Automapper 5.0.2包裝

+2

這對我工作VS2013更新5。 ! – Tom

+1

也爲我工作。感謝您節省我的一天。 –

+2

爲我工作!謝謝。 (我需要在安裝新版本的Nuget後重新啓動VS) –

27

我結束了需要更新的NuGet。這是包含在解決方案exe文件,以便能夠建立的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)。這爲我解決了這個問題。