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 框架。
AutoMapper 具有指定 .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没有报错
我试图在 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 框架。
AutoMapper 具有指定 .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没有报错