NuGet包管理器:'AutoMapper'已经为'Microsoft.CSharp'定义了依赖关系

时间:2016-07-07 14:22:49

标签: c# visual-studio-2012 nuget automapper

我正在尝试在Visual Studio Premium 2012上使用NuGet将AutoMapper添加为项目的依赖项,但它失败了。

它说:

  

操作失败
  'AutoMapper'已经定义了依赖关系   'Microsoft.CSharp'。

我可以添加其他依赖项。

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

  

NuGet Package Manager 2.8.60318.667

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

10 个答案:

答案 0 :(得分:94)

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

AutoMapper具有组依赖关系,它指定了.NETStandard的目标框架。由于您的NuGet Package Manager版本太旧,因此无法识别此目标框架并将其转换为未知目标框架,并且您最终会遇到重复框架,因为在该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包。

答案 1 :(得分:41)

似乎是当前版本的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 Package Manager,答案是:

PM> Install-Package AutoMapper -Version 4.2.1

答案 2 :(得分:30)

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

nuget.exe update -self

答案 3 :(得分:26)

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

完成后,我重新启动了Visual Studio。之后,我能够使用Automapper 5.0.2包

答案 4 :(得分:17)

转到Visual Studio&gt;工具&gt;扩展和更新

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

你会找到Nuget的更新。

更新nuget包并尝试安装或构建项目。

谢谢, GT

答案 5 :(得分:2)

如果您遇到VS2012和旧的Nuget版本,还有其他解决方法:

  • 找到VS 2012的Nuget Package Manager的缓存文件夹(Tools - Options - Nuget Package Manager
  • 使用您喜欢的Zip工具
  • 打开AutoMapper.5.x.x.nupkg
  • 修改文件AutoMapper.nuspec - 我只是删除了除.NETFramework4.5
  • 之外的所有依赖项
  • 将缓存文件夹添加为Nuget来源(同样位于Tools - Options - Nuget Package Manager
  • 使用控制台或GUI安装Automapper,但请务必先选择新添加的缓存文件夹作为包源。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

Automapper 6.0.2 - nuget 2.8.8给出了这个错误。需要更新到3.4.4以使其正常工作。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

在使用Visual Studio 2010打开项目时,我发现了这个确切的问题。

使用VS2017打开后,我能够安装AutoMapper而没有任何错误。