ChatGPT解决这个技术问题 Extra ChatGPT

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

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

它说:

操作失败的“AutoMapper”已经为“Microsoft.CSharp”定义了一个依赖项。

我可以添加其他依赖项。

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

NuGet 包管理器 2.8.60318.667

任何想法我应该检查什么?

Automapper Nuget Package failed 的可能重复项
@Venky 这个问题和我的不同之处在于我使用的是最新版本的 nugget 包管理器

M
Matt Ward

问题是您的 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 包。


谢谢马特,我认为您的意思是 VS 2012“不可用”
由于超出我能力范围的原因,我坚持使用 VS 2012,所以我将继续使用以前的版本
p
pomber

当前版本的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 Packager 的 VSTS Build 任务中得到了这个确切的错误。我降级到 4.2.1 并修复了错误。
在我降级之前,我尝试升级到 5.0.2,但它仍然给了我这个错误。
我明白了:无法找到包'AutoMapper'的版本'4.2.1'。在行:1 char:1 + Install-Package AutoMapper -Version 4.2.1
正确答案是马特·沃德投票率较高的答案。这个解决方案确实有效,但它是一个非常短期的修复......
@MPritchard Matt 的解决方案不适用于 VS2012,这是我的问题之一
b
bkaid

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

nuget.exe update -self


这解决了我的问题。这应该是正确的答案,因为实际上降级 AutoMapper 并不是正确的答案。
除了今天使用 Nuget 4.5.1 仍然会发生这种情况。这似乎是 AutoMapper 特有的问题
A
Alexander Groß

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


也为我工作。谢谢你拯救了我的一天。
为我工作!谢谢。 (安装新版 Nuget 后需要重启 VS)
G
Ganesh Todkar

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

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

您将找到 Nuget 的更新。

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

谢谢,GT


为我工作:)
m
marapet

如果您被 VS2012 和旧的 Nuget 版本卡住,另一种解决方法:

找到VS 2012的Nuget包管理器的Cache文件夹(用工具-选项-Nuget包管理器)

使用您最喜欢的 Zip 工具打开 AutoMapper.5.xxnupkg

修改文件 AutoMapper.nuspec - 我只是删除了除 .NETFramework4.5 之外的所有依赖项

将缓存文件夹添加为 Nuget 源(也在工具 - 选项 - Nuget 包管理器中)

使用控制台或 GUI 安装 Automapper,但请确保首先选择新添加的缓存文件夹作为包源。

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


J
JTW

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


L
Leszek P

Automapper 6.0.2 - nuget 2.8.8 给出了这个错误。需要更新到 3.4.4 才能正常工作。


r
rjose

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


E
El-Ahrairah

在使用 Visual Studio 2010 打开项目时,我发现了这个确切的问题。

使用 VS2017 打开后,我能够安装 AutoMapper 而没有任何错误。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅