C# NuGet软件包管理器:';AutoMapper';已经为';定义了依赖项;微软.CSharp';

C# NuGet软件包管理器:';AutoMapper';已经为';定义了依赖项;微软.CSharp';,c#,visual-studio-2012,nuget,automapper,C#,Visual Studio 2012,Nuget,Automapper,我试图在VisualStudioPremium 2012上使用NuGet将AutoMapper作为依赖项添加到项目中,但失败了 它说: 操作失败 “AutoMapper”已为定义了依赖项 “Microsoft.CSharp” 我可以添加其他依赖项 我正在使用VS 2012最新版本的软件包管理器: NuGet软件包管理器2.8.60318.667 你知道我应该检查什么吗?这看起来像是Automapper软件包使用的.NET版本与您的项目不匹配。您能确认您的项目正在使用的.NET版本吗?当前版本的a

我试图在VisualStudioPremium 2012上使用NuGet将AutoMapper作为依赖项添加到项目中,但失败了

它说:

操作失败
“AutoMapper”已为定义了依赖项 “Microsoft.CSharp”

我可以添加其他依赖项

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

NuGet软件包管理器2.8.60318.667


你知道我应该检查什么吗?

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

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

自动映射有一个组依赖项,它指定.NETStandard的目标框架。由于您的NuGet Package Manager版本太旧,它无法识别此目标框架并将其转换为未知的目标框架,因此最终会出现重复的框架。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 Package Manager的缓存文件夹(使用
    工具
    -
    选项
    -
    Nuget Package Manager
  • 使用您喜爱的Zip工具打开
    AutoMapper.5.x.x.nupkg
  • 修改文件
    AutoMapper.nuspec
    -我只是删除了除
    .NETFramework4.5
  • 将缓存文件夹添加为Nuget源(也在
    工具
    -
    选项
    -
    Nuget软件包管理器中)
  • 使用控制台或GUI安装Automapper,但请确保首先选择新添加的缓存文件夹作为包源

当然,为了安装Automapper,下一个版本可能也需要修改。

我在VS2013上也遇到过同样的问题。我必须更新到VS2013更新5,并在上获取VS2013的最新nuget发行版


完成后,我重新启动了VisualStudio。之后,我能够使用Automapper 5.0.2软件包

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


nuget.exe更新-self

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

在左侧的“手风琴”菜单中查找更新,转到Visual Studio Gallery

您将找到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,没有任何错误。

可能重复@Venky这个问题与我的问题之间的区别是,我使用的是nugget package Manager的最新版本。我遇到了这个问题,并且从NuGet Packager的VSTS构建任务中得到了这个准确的错误。我降级到4.2.1,这修复了错误。降级之前,我试图升级到5.0.2,但它仍然给了我这个错误。我得到了这个问题:找不到包“AutoMapper”的版本“4.2.1”。在第1行:char:1+安装包AutoMapper-版本4.2.1正确答案是Matt Ward的高票答案。这个解决方案确实有效,但它是一个非常短期的解决方案…@MPritchard Matt的解决方案不适用于VS2012,这是我的问题之一Hanks Matt,我想你的意思是VS2012“不可用”,因为超出我能力的原因,我坚持使用VS2012,所以我也会使用以前的版本。谢谢你救了我一天,为我工作!谢谢(在安装新版本的Nuget后,我需要重新启动VS),这为我解决了这个问题。这应该是正确的答案,因为实际上降级AutoMapper并不是一个正确的答案。除了今天使用Nuget 4.5.1仍然会发生这种情况。这似乎是一个特定于我的问题:)
'AutoMapper' already has a dependency defined for 'Microsoft.CSharp'