我正在尝试将 AutoMapper 作为依赖项添加到在 Visual Studio Premium 2012 上使用 NuGet 的项目,但它失败了。
它说:
操作失败的“AutoMapper”已经为“Microsoft.CSharp”定义了一个依赖项。
我可以添加其他依赖项。
我正在使用 VS 2012 的包管理器的最新版本:
NuGet 包管理器 2.8.60318.667
任何想法我应该检查什么?
问题是您的 NuGet 包管理器太旧了。您需要 NuGet 2.12,因为它支持 AutoMapper 5.0.1 NuGet 包正在使用的较新的 .NETStandard 框架。
AutoMapper 有一个组依赖项,它指定 .NETStandard 的目标框架。由于您的 NuGet 包管理器版本太旧,它无法识别此目标框架并将其转换为未知目标框架,并且您最终会得到重复的框架,因为在该 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 包管理器,答案是:
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 库。
您将找到 Nuget 的更新。
更新 nuget 包并尝试安装或构建项目。
谢谢,GT
如果您被 VS2012 和旧的 Nuget 版本卡住,另一种解决方法:
找到VS 2012的Nuget包管理器的Cache文件夹(用工具-选项-Nuget包管理器)
使用您最喜欢的 Zip 工具打开 AutoMapper.5.xxnupkg
修改文件 AutoMapper.nuspec - 我只是删除了除 .NETFramework4.5 之外的所有依赖项
将缓存文件夹添加为 Nuget 源(也在工具 - 选项 - Nuget 包管理器中)
使用控制台或 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 而没有任何错误。