NuGet包pipe理器:“AutoMapper”已经有一个为“Microsoft.CSharp”定义的依赖项

我试图添加AutoMapper作为一个项目的依赖项在Visual Studio Premium 2012上使用NuGet,但它失败。

它说:

手术失败
“AutoMapper”已经为“Microsoft.CSharp”定义了一个依赖项。

我能够添加其他依赖项。

我正在使用VS 2012的最新版本的包pipe理器:

NuGet包pipe理器2.8.60318.667

任何想法我应该检查什么?

问题是你的NuGet包pipe理器太旧了。 您需要NuGet 2.12,因为它支持AutoMapper 5.0.1 NuGet包使用的较新的.NETStandard框架。

AutoMapper具有一个组依赖关系,它指定了一个.NET标准的目标框架。 由于你的NuGet包pipe理器版本太旧,它不能识别这个目标框架,并将其转换为未知的目标框架,并最终得到重复的框架,因为在那个NuGet包中使用了几次.NETStandard。 这会导致错误:

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

不幸的是,NuGet 2.12不适用于Visual Studio 2012,但可用于Visual Studio 2013。

因此,无论您是需要更新到Visual Studio 2013或更高版本,还是必须使用不支持.NETStandard的旧版AutoMapper NuGet包。

似乎是当前版本的automapper的问题:

AutoMapper 5.0.0 2016年6月28日星期二

我尝试了以前的版本,它的工作原理:

 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包pipe理器,答案是:

 PM> Install-Package AutoMapper -Version 4.2.1 

我最终需要更新解决scheme中包含的NuGet.exe,以便能够通过运行来构buildNuGet包:

nuget.exe update -self

我在VS2013有同样的问题。 我必须更新到VS2013更新5,并获得最新的VS2013 nuget发行版在https://dist.nuget.org/visualstudio-2013-vsix/v2.12.0/NuGet.Tools.vsix

一旦完成,我可以使用Automapper 5.0.2包

转到Visual Studio>工具>扩展和更新

在左手风琴菜单中查找更新,转到Visual Studio图库。

你会发现一个Nuget的更新。

更新nuget包,并尝试安装或build立项目。

谢谢,GT

另一个解决方法,如果你坚持VS2012和旧的Nuget版本:

  • findVS 2012的Nuget Package Manager的Cache文件夹(带有ToolsOptionsNuget Package Manager
  • 用你喜欢的Zip工具打开AutoMapper.5.xxnupkg
  • 修改文件AutoMapper.nuspec – 我只是删除了除.NETFramework4.5之外的所有依赖.NETFramework4.5
  • 将caching文件夹添加为Nuget源(也在ToolsOptionsNuget Package Manager
  • 使用控制台或GUI安装Automapper,但确保首先select新添加的caching文件夹作为包源。

当然,Automapper的下一个版本也可能需要进行调整才能安装它。

这看起来像是由Automapper软件包使用的.NET版本与您的项目之间的不匹配。 你能确认你的项目正在使用的.NET版本吗?

Automapper 6.0.2 – nuget 2.8.8出现这个错误。 需要更新到3.4.4才能正常工作。

删除了CSharp和AutoMapper。 首先安装CSharp(4.0.0.0),然后添加Automapper(6.1.1.0)。 这解决了我的问题。