NuGet:'X'已经具有为'Y'定义的依赖项


94

我在尝试安装软件包时在NuGet中遇到以下错误 Microsoft.AspNet.Server.IIS

Attempting to resolve dependency 'Microsoft.AspNet.Loader.IIS.Interop (≥ 1.0.0-alpha4-10330)'.
Attempting to resolve dependency 'Microsoft.AspNet.Loader.IIS (≥ 1.0.0-alpha4-10330)'.
'Microsoft.AspNet.Loader.IIS' already has a dependency defined for 'Microsoft.AspNet.FeatureModel'.

怎么解决呢?

更新: 另外,我得到以下信息:

Attempting to resolve dependency 'Microsoft.Framework.DependencyInjection (≥ 1.0.0-alpha4-10326)'.
'Microsoft.Framework.DependencyInjection' already has a dependency defined for 'Microsoft.Framework.ConfigurationModel'.

您是否尝试将Nuget更新为最新版本?见stackoverflow.com/questions/23286522/...
jrummell

2
@ jrummell我有:2.8.50313.46,目前VS 2013中没有更新。
TN。

Answers:


151

通过安装最新的NuGet软件包管理器可以解决此问题:

https://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca

不要忘记重新启动Visual Studio。


5
我拥有最新的Nuget“ NuGet软件包管理器2.8.60318.667”,但得到“安装包:'System.Collections'已经为'Microsoft.NETCore.Platforms'定义了依赖项。尝试安装“ Install-Package Microsoft.AspNet.WebHooks.Custom.AzureStorage -Pre”时
Gopi

2
我遇到的问题与@TechJerk相同,在我的情况下,我试图将项目放入nuget包中。我可以在本地执行此操作,但不能在构建服务器上执行。在构建服务器上,我得到“ System.Collections”已经具有为“ Microsoft.NETCore.Platforms”定义的依赖项。更新NuGet无效。
user3841460

这对我有用。就我而言,我试图安装SQLite-net PCL(Xamarin)。Visual Studio是2013 Ultimate。
ramires.cabral '16

2
我遇到的问题与@TechJerk相同,但是'System.Net.Http' already has a dependency defined for 'System.IO'-我尝试重新安装和升级NuGet没有任何效果(我当前使用的是2.8版本和Visual Studio 2012)
Blundering Philosopher

2
如果在TeamCity中遇到此错误,则可能还需要更新构建步骤设置以使用最新的可用nuget版本。
史蒂夫·格雷斯特

74

我通过以下方式解决了我的解决方案中的类似问题:

  1. 打开命令提示符
  2. 导航到我的解决方案中的.nuget文件夹
  3. 跑步 nuget update -self

这升级了 NuGet.exe我的解决方案中2.8.03.4.4,从而修复了'X'已经具有为'Y'错误定义的依赖性,该依赖性阻止了它在构建之前自动下载SSH.NET。

(如果您的解决方案没有其中的副本NuGet.exe-并且可能没有副本-那么您应该尝试使用TN的答案中的解决方案)


这是为我修复的,但是我在构建服务器上运行了它。生成失败的日志指出了所涉及的NuGet.exe的路径。
InteXX

20

我尝试了更新,但对我而言无效。帮助:

  1. 卸载NuGet =>工具=>扩展和更新=>已安装
  2. 安装NuGet
  3. 重新加载Visual Studio

1
这为我做到了。
Naner

6

我在Visual Studio 2010的过时版本上遇到此错误。由于项目配置,我无法将此版本更新为较新版本。因此,上面建议的更新NuGet并不能解决我的问题。

在这种情况下和类似情况下,错误的根本原因在于您尝试安装的软件包的依赖性,而这些依赖性与项目中可用的.NET版本不兼容。

通用解决方案不是对Visual Studio或.NET的强制性更新,而是在安装与您的系统兼容的同一软件包的更早的NuGet版本时。

无法确定到底哪个版本可以工作。就我而言,此命令安装的软件包没有任何NuGet更新。

Install-Package X -Version [compatible version number]

5

我在TeamCity构建服务器上遇到此问题。我尝试通过TC更新构建服务器上的NuGet,但这没有用。我最终通过将Nuget Installer构建步骤的“更新模式”从解决方案文件更改为来解决了该问题packages.config


谢谢(你的)信息。我遇到了同样的问题+将NuGet更新为4.0.0 /不是默认设置,并将此失败的一个构建配置的NuGet更改为v4才完成了这项工作!
安德鲁·伯纳特·汤普森博士(Dr. Andrew Burnett-Thompson)

但是,你是怎么做的?
ympostor

3

'Newtonsoft.Json' already has a dependency defined for 'Microsoft.CSharp'在TeamCity构建服务器上遇到问题。我将Nuget Installer构建步骤的“ 更新模式 ”从解决方案文件更改为packages.config,将NuGet.exe更改为最新版本(我安装了3.5.0),它可以正常工作!


怎么做??
ympostor

我得到这个完全相同的问题。
杰西(Jess)


转到“构建配置设置”,在“构建步骤”下,为NuGet安装程序添加一个步骤作为“运行器”类型。将Nuget Installer构建步骤的“更新模式”从解决方案文件更改为packages.config,将NuGet.exe更改为最新版本
szc0025

2
  1. 转到链接 https://www.nuget.org/packages/ClosedXML/0.64.0
  2. 搜索您的NuGet软件包
  3. 查看相关软件包的所有版本
  4. 安装较低版本的软件包

如果您的Visual Studio版本太低,这实际上是一个很好的解决方案。就我而言,我必须使用VS2012,它不支持最新版本的NuGet。这自动意味着我不能总是通过Manage NuGet Packages窗口下载最新的软件包。
Mixxiphoid

1

就我而言,我必须删除Project文件夹中的文件NuGet.exe /.nuget NuGet.exe并重建项目。

我在NuGet.targets中也将DownloadNuGetExe标记为true:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

希望对您有所帮助。


0

唯一适用于我的解决方案是从Visual Studio 2013完全卸载nuget,然后在两次之间强制强制重新启动VS的情况下再次安装它。



0

在使用vs 2010的项目中,我只能通过通过Package Manager Console安装所需的较旧版本的软件包来解决此问题。

该命令有效:

PM> Install-Package EPPlus -Version 4.5.3.1

该命令不起作用:

PM> Install-Package EPPlus -Version 4.5.3.2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.