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


76

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

它说:

操作失败
'AutoMapper'已经具有为'Microsoft.CSharp'定义的依赖项。

我能够添加其他依赖项。

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

NuGet软件包管理器2.8.60318.667

有什么想法我应该检查什么?



@Venky和我的问题之间的区别是,我使用的是最新版的块金包装管理器
pomber

Answers:


94

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

AutoMapper具有组依赖关系,它指定.NETStandard的目标框架。由于您的NuGet软件包管理器版本太旧,因此无法识别该目标框架并将其转换为Unknown目标框架,并且由于该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程序包。



由于超出我的能力范围的原因,我坚持使用VS 2012,因此我将继续使用
previos

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

PM> Install-Package AutoMapper -Version 4.2.1

1
我遇到了这个问题,并且从NuGet Packager的VSTS Build任务中得到了确切的错误。我降级到4.2.1,并修复了该错误。
AC4

在我降级之前,我尝试升级到5.0.2,但仍然给我该错误。
AC4

我得到了:找不到软件包'AutoMapper'的版本'4.2.1'。在第1行:1个字符:1 + Install-Package AutoMapper -Version 4.2.1
Joe

正确的答案是马特·沃德(Matt Ward)投票的较高者。该解决方案确实有效,但这是一个非常短期的解决方案……
MPritchard

@MPritchard Matt的解决方案不适用于VS2012,这是我的问题之一
Pomber

30

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

nuget.exe update -self


1
那为我解决了问题。这应该是正确的答案,因为实际上降级AutoMapper不合适。
拉斐尔

但是今天使用Nuget 4.5.1仍然会发生这种情况。这似乎是AutoMapper特有的问题
ebol2000 '18



2

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

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

当然,为了安装它,下一版本的Automapper也可能需要改编。


0

这看起来像Automapper软件包使用的.NET版本与您的项目之间的不匹配。您可以确认项目使用的.NET版本吗?


0

Automapper 6.0.2-nuget 2.8.8给出此错误。需要更新至3.4.4才能正常工作。


0

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.