visual-studio - 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
(使用 UI 安装包时也可以在那里选择)。因此,至少在我正在使用的特定版本的 Nuget 包管理器中,这似乎是一些错误。
我能做些什么来解决这个问题?我可以尝试修复已安装的 nuget 管理器(更新窗口中没有任何更新)。谢谢!
更新
我刚刚尝试了一个传统的 .NET 项目,它可以工作。但是当我的项目以 .NET Core (ASP.NET Core) 为目标时出现的问题?看起来它不支持 .NET Core 项目的该功能?
解决方案
DependencyVersion switch
用于控制 NuGet 查找补丁版本时的行为。它似乎是在 NuGet 2.8 之后引入的,但我们应该知道的一点是该选项仅支持packages.config
format。
有两种包管理格式:Projects.config和PackageReference。
1.对于传统的.net项目:可以使用Packages.config
或PackageReference
管理其nuget包。但默认使用packages.config
.
2.对于.net核心项目(使用新的SDK格式项目文件):它使用新PackageReference
格式作为其包管理格式。
有关它的更多详细信息,请参阅:项目类型支持
有人在 github 上发布了此功能请求,请在此处查看问题。希望对您有所帮助。
更新:
我希望它选择 Microsoft.AspNetCore.Http.Abstractions 2.2.0
尝试先删除 bin 和 obj 文件夹,
然后进入Tools menu=>Nuget Package Manager=>Package Manager Settings=>Clear All Nuget Caches。(有时候会删除里面的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 版本。希望能帮助到你:)
推荐阅读
- ios - 如何在 SwiftUI 中更改表单的背景颜色?
- node.js - 如何在指定时间后自动从 MongoDB 中的文档中删除数据
- json - 如何在使用 spark 将 json 文档写入 Mongo DB 时为 _id 字段设置自定义值
- vector - Clojure:将变量的值传递给宏
- python-3.x - 如何在云端和设备之间保持信息同步
- javascript - 如何从spring data jpa将值打印到用户界面?
- c# - 我想将文本框的文件夹路径写入路径规范作为字符串
- php - 使用 php array_search / array_column 查找值时定义偏移量(例如忽略 1 个匹配结果,查找下一个)
- django - 在另一个数据库中验证用户 Django
- automation - Windows 上单节点 cassandra 的 Chef 配方