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文件夹(带有
Tools
–Options
–Nuget Package Manager
) - 用你喜欢的Zip工具打开
AutoMapper.5.xxnupkg
- 修改文件
AutoMapper.nuspec
– 我只是删除了除.NETFramework4.5
之外的所有依赖.NETFramework4.5
- 将caching文件夹添加为Nuget源(也在
Tools
–Options
–Nuget 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)。 这解决了我的问题。