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

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

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

它说:

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

我可以添加其他依赖项。

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

NuGet Package Manager 2.8.60318.667

知道我应该检查什么吗?

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

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

AutoMapper 5.0.0 Tuesday, June 28, 2016

我试过以前的版本,它有效:

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 包管理器太旧了。您需要 NuGet 2.12,因为它支持 AutoMapper 5.0.1 NuGet 包正在使用的更新的 .NETStandard 框架。

A​​utoMapper 具有指定 .NETStandard 目标框架的组依赖项。由于您的 NuGet 包管理器版本太旧,它无法识别此目标框架并将其转换为未知目标框架,您最终会得到重复的框架,因为 .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 包。

如果您受困于 VS2012 和旧的 Nuget 版本,还有一个解决方法:

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

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

我在 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 包

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

构建 NuGet 包

nuget.exe update -self

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

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

您会发现 Nuget 的更新。

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

谢谢, GT

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没有报错