这必须是我正在使用的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项目的功能?
答案 0 :(得分:0)
DependencyVersion switch
用于控制NuGet查找补丁程序版本时的行为。它似乎是在NuGet 2.8之后引入的,但我们应该知道的一点是this option only supports packages.config
format。
有两种软件包管理格式:Projects.config和PackageReference。
1。对于传统的.net项目:它可以使用Packages.config
或PackageReference
来管理其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版本。希望对您有所帮助:)