【问题标题】:Unable to resolve dependencies. 'xxx' is not compatible with 'yyy constraint: zzz)'无法解决依赖关系。 “xxx”与“yyy 约束:zzz)”不兼容
【发布时间】:2017-11-23 17:16:14
【问题描述】:

我们有一个项目正在使用一组基于 Nuget 的 Azure 库。其中一个发布时具有对 Newtonsoft.Json 的特定 MIN 和 MAX 依赖(最大版本为 7)

这很让人头疼,因为其他库依赖于 8+ 版本的 Netwon,而这个特定的 Azure 库可以很好地与任何现代 Json 包配合使用。

在 VS2013 中,我们强制通过 nuget 安装程序使用较新版本的 Json 包安装此 Azure 库,随后,Nuget 从未给我们安装/更新其他库的任何问题。

但是,在升级到 VS2017 后,我们无法更新任何包(或者至少是依赖于 Json 的包),并且出现以下错误。

无法解决依赖关系。 “Newtonsoft.Json 8.0.3”与“Microsoft.Azure.Insights 0.15.0-预览约束:Newtonsoft.Json (>= 6.0.8 &&

我们如何让 Nuget 忽略特定 Azure 库的不重要的 MAX 版本依赖性?

【问题讨论】:

    标签: nuget visual-studio-2017


    【解决方案1】:

    我们如何让 Nuget 忽略特定 Azure 库不重要的 MAX 版本依赖性?

    如果您确认 Azure 库可以很好地与任何现代 Json 包一起使用,并且您希望同时使用 Microsoft.Azure.Insights 0.15.0-preview 和 8+ 版本的 Newtonsoft.Json。我想为您提供一种解决方法,希望对您有所帮助。

    详细步骤:

    1. 首先安装包Microsoft.Azure.Insights 0.15.0-preview及其依赖项。

    2. 只卸载包Microsoft.Azure.Insights 0.15.0-preview,保持依赖安装。

    3. Newtonsoft.Json 更新到版本 8+。

    4. 使用以下 NuGet 命令在包管理器控制台中安装包 Microsoft.Azure.Insights 0.15.0-preview

    Install-package Microsoft.Azure.Insights -IncludePrerelease -IgnoreDependencies

    使用选项-IgnoreDependencies,NuGet 将忽略该特定 Azure 库的不重要的 MAX 版本依赖性:

    注意:需要说明的是,如果您下次更新Newtonsoft.Json包,您仍然需要按照上述步骤升级您的Newtonsoft.Json包。

    【讨论】:

    • 感谢您的帮助。如前所述,我最初确实这样做了,但现在我无法更新任何依赖 Json 的 /other/ 包,因为 Nuget 正在突出 Insights 和 Json 之间的冲突
    • @Igorek,是的,正如我在答案中的注释中提到的那样。如果下次更新Newtonsoft.Json包,还是要卸载包Microsoft.Azure.Insights,然后更新Json包,重新安装Microsoft.Azure.Insights,选项-IgnoreDependencies。这是 nuget 设计的。
    • 再一次,既然你说“特定的 Azure 库可以与任何现代 Json 包一起工作”,那么为什么不将 Json 包更新到最新版本呢?在这种情况下,您不需要稍后更新它。
    • 正如帖子所说,这一次有效。但这肯定不是解决方案,Nuget 仍然无法使用。必须有更好的方法来引用依赖包,但覆盖不需要卸载的传递依赖约束。它使 Nuget 被有效地破坏了。
    猜你喜欢
    • 2016-03-09
    • 2021-02-27
    • 2011-08-09
    • 1970-01-01
    • 2016-02-16
    • 2017-02-20
    相关资源
    最近更新 更多