我正在尝试在Visual Studio Premium 2012上使用NuGet将AutoMapper作为依赖项添加到项目中,但是失败。
它说:
操作失败
'AutoMapper'已经具有为'Microsoft.CSharp'定义的依赖项。
我能够添加其他依赖项。
我正在使用VS 2012的包管理器的最新版本:
NuGet软件包管理器2.8.60318.667
有什么想法我应该检查什么?
Answers:
问题是您的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程序包。
当前版本的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版本,则可以采用另一种解决方法:
Tools
- - )Options
Nuget Package Manager
AutoMapper.5.x.x.nupkg
用您喜欢的Zip工具打开AutoMapper.nuspec
-我只是删除了所有依赖项,除了.NETFramework4.5
Tools
- Options
-Nuget Package Manager
)当然,为了安装它,下一版本的Automapper也可能需要改编。