繁体   English   中英

NuGet软件包管理器:'AutoMapper'已经具有为'Microsoft.CSharp'定义的依赖项

[英]NuGet Package Manager: 'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'

我正在尝试在Visual Studio Premium 2012上使用NuGet将AutoMapper作为依赖项添加到项目中,但是失败。

它说:

手术失败
“ AutoMapper”已经具有为“ Microsoft.CSharp”定义的依赖项。

我能够添加其他依赖项。

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

NuGet软件包管理器2.8.60318.667

有什么想法应该检查吗?

问题是您的NuGet软件包管理器太旧了。 您需要NuGet 2.12,因为它支持AutoMapper 5.0.1 NuGet程序包正在使用的较新的.NETStandard框架。

AutoMapper具有组依赖关系,它指定.NETStandard的目标框架。 由于您的NuGet软件包管理器版本太旧,因此无法识别此目标框架并将其转换为Unknown目标框架,并且由于该.NETStandard在该NuGet软件包中使用了几次,因此最终会得到重复的框架。 这会导致错误:

'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软件包管理器,则答案是:

PM> Install-Package AutoMapper -Version 4.2.1

我最终需要更新解决方案中包含的NuGet.exe,以便能够通过运行以下命令来构建NuGet软件包:

nuget.exe update -self

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

完成后,我重新启动了Visual Studio。 之后,我可以使用Automapper 5.0.2软件包

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

在左侧手风琴菜单中找到“更新”,转到Visual Studio Gallery。

您将找到Nuget的更新。

更新nuget软件包,然后尝试安装或构建项目。

谢谢,GT

如果您仍然使用VS2012和旧的Nuget版本,则可以采用另一种解决方法:

  • 找到VS 2012的Nuget软件包管理器的Cache文件夹(带有Tools - Options Nuget Package Manager
  • 使用您最喜欢的Zip工具打开AutoMapper.5.xxnupkg
  • 修改文件AutoMapper.nuspec我只是删除了.NETFramework4.5以外的所有依赖.NETFramework4.5
  • 将缓存文件夹添加为Nuget源(也在“ Tools - Options Nuget Package Manager
  • 使用控制台或GUI安装Automapper,但请确保首先选择新添加的缓存文件夹作为程序包源。

当然,可能也需要修改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)。 这为我解决了问题。

使用Visual Studio 2010打开项目时,我观察到了这个确切的问题。

使用VS2017打开后,我能够无任何错误地安装AutoMapper。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM