nuget 包与其引用的 nuget 包之间的不同版本

Posted

技术标签:

【中文标题】nuget 包与其引用的 nuget 包之间的不同版本【英文标题】:Different versions between a nuget package and its referenced nuget packages 【发布时间】:2021-07-10 15:50:21 【问题描述】:

我有一个引用以下 nuget 包的 Azure 函数(版本 3,dotnet 3.1):

Microsoft.Extensions.Configuration

当我尝试安装这个 nuget 时,我得到了 5.x 版本的包,这会导致安装

Microsoft.Extensions.Configuration.Abstractions

但是我在运行我的函数时遇到了冲突。在其他几个主题上找到的解决方案是降级 nuget 包,因为 Azure 函数不支持 Microsoft.Extensions.Configuration.Abstractions 包的 5.0 依赖项。

所以我在包管理器控制台中执行以下命令行来安装初始的nuget包:

Install-Package Microsoft.Extensions.Configuration -Version 3.1.14 -DependencyVersion Lowest

但它总是安装依赖“Microsoft.Extensions.Configuration.Abstractions”的版本 5.x

对于下载正确版本的依赖有什么建议吗?

【问题讨论】:

在 .proj 文件中指定版本。之后,不应该安装错误的包 我用了你给的命令,everything好像没问题。 请与我们分享您安装的所有 nuget 包。您是否安装了任何其他依赖于Microsoft.Extensions.Configuration.Abstractions 5.x 的 nuget 包?请检查一下。在我这边,it shows the right version 3.1.14。另外,请关闭VS,删除C:\Users\xxx\.nuget\packages下的所有文件,然后重启你的项目再次检查。 我发现我的问题与 azure 函数无关。但是来自我依赖项中的其他项目。我对 3.1.14 进行了广泛的降级(甚至是使用 net5 的项目),一切都已修复。谢谢大家! 【参考方案1】:

我用了你给的命令,一切似乎都没有问题:

1.正如cmets中提到的Sara Liu-MSFT,您可能需要检查其他程序集是否引用Microsoft.Extensions.Configuration.Abstractions。如果是这样,您可能需要降级该程序集。

您可以在这里查看:

2. 或者您可以尝试手动引用Microsoft.Extensions.Configuration.Abstractions 程序集:

<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.14" />

【讨论】:

如上所述,在我的解决方案中完全降级我的所有项目可以解决问题。但是您的评论是正确的(就像我一样)。因此,我会将您的答案标记为解决方案。非常感谢!

以上是关于nuget 包与其引用的 nuget 包之间的不同版本的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中添加引用和将 Nuget 包添加到项目之间的区别

nuget 包引用引发的问题

错误目录结构中的 NuGet 引用

此项目引用此计算机上缺少的 NuGet 包。

从命令行添加Nuget对VS项目包的引用

此项目引用此计算机上缺少的 NuGet 包