NuGet软件包管理器不安装具有最高依赖版本的软件包?

时间:2019-06-23 19:53:26

标签: visual-studio .net-core nuget

这必须是我正在使用的NuGet软件包管理器(版本4.6.0)的错误。我使用了DependencyVersion highest选项,但它总是选择最低版本的依赖项。

就像这样(我正在尝试安装Serilog.AspNetCore,其依赖版本为2.2.0-始终选择最新版本,但始终选择2.0.0)。

install-package Serilog.AspNetCore -DependencyVersion highest

它选择的一个依赖项是Microsoft.AspNetCore.Http.Abstractions 2.0.0,但我希望它选择Microsoft.AspNetCore.Http.Abstractions 2.2.0。 这很重要,因为在我的项目中需要版本2.2.0,Serilog应该通过安装正确版本的依赖项来适应该要求。但是在这里我无能为力以帮助它了解我想要的东西。

NuGet程序包管理器的用户界面中也未显示 安装和更新选项 (使用UI时,也可以在其中选择DependencyVersion安装软件包)。因此,至少在我使用的特定版本的Nuget软件包管理器中,这似乎是一个错误。

我该怎么做才能解决此问题?我可以尝试修复已安装的nuget管理器(“更新”窗口中没有任何更新)。谢谢!

UPDATE

我刚刚尝试了一个传统的.NET项目,它可以工作。但是,当我的项目以.NET Core(ASP.NET Core)为目标时,会出现问题吗?看起来不支持.NET Core项目的功能?

1 个答案:

答案 0 :(得分:0)

DependencyVersion switch用于控制NuGet查找补丁程序版本时的行为。它似乎是在NuGet 2.8之后引入的,但我们应该知道的一点是this option only supports packages.config format

有两种软件包管理格式:Projects.configPackageReference

1。对于传统的.net项目:它可以使用Packages.configPackageReference来管理其nuget包。但是默认情况下,它使用packages.config。 / p>

2。对于.net核心项目(使用新的SDK格式的项目文件):它使用新的PackageReference格式作为其程序包管理格式。

有关它的更多详细信息,请参见:Project Type Support

有人在github上发布了此功能请求,请参见问题here。希望它会有所帮助。

更新

  

我希望它选择Microsoft.AspNetCore.Http.Abstractions 2.2.0

尝试首先删除bin和obj文件夹,

然后转到“工具”菜单=>“ Nuget软件包管理器” =>“软件包管理器设置” =>“清除所有Nuget缓存”。(有时它将删除packages中的C:\Users\lancel\.nuget\packages文件夹,我们需要手动创建一个新的packages文件夹)

然后在安装Microsoft.AspNetCore.Http.Abstractions 2.2.0 package软件包之前分别安装Serilog.AspNetCore。生成应用程序,您可以通过设置CopyLocalLockFileAssemblies来检查输出.dll。在我的机器中,它成功引用了Microsoft.AspNetCore.Http.Abstractions.dll的2.2.0版本。希望对您有所帮助:)