paket - 在 paket.dependency 文件中,运算符 `==` 的含义是什么?

标签 paket

在项目的 paket.dependency 文件中,我找到了这些行:

nuget Microsoft.AspNet.Mvc == 5.2.6
nuget Microsoft.AspNet.Razor == 3.2.6
nuget Microsoft.AspNet.WebPages == 3.2.6

我检查了official documentation没有成功。 我的猜测是 == 可以修复版本号,但为了实现这一点,我们可以直接编写 nuget Microsoft.AspNet.Mvc 5.2.6

运算符==的含义是什么?

最佳答案

这称为“仅使用此版本”约束。它确实应该是 paket.dependency 引用的一部分,但它可以在:https://fsprojects.github.io/Paket/nuget-dependencies.html 中找到。

我将尝试用一个例子来解释它。想象一下您依赖于包 A 和 B。

A 和 B 都依赖于 C,但在各自的 nuget 包依赖项声明中指定:

A 依赖于 C 版本 >= 1.2.3 但 < 2.0

B 依赖于 C 版本 >= 2.0

在这种情况下,paket 将无法找到同时适合 A 和 B 的 C 的通用版本。

我在某些项目中看到过这样的情况,其中存在对像 A 这样的包的依赖,该包声称它无法与 >= 2.0 的包 C 版本一起使用。但是,在实际测试时,A 在最高版本上工作得很好因此可以添加一行强制 paket 覆盖 A 对 C 的版本约束:

nuget C == 2.0

当然,长期解决方案是要求 A 的维护者更新他们的 nuget 依赖声明。

关于paket - 在 paket.dependency 文件中,运算符 `==` 的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687895/

相关文章:

docker - 在使用 Paket 从项目构建的 Docker 镜像中找不到 Microsoft.AspNetCore.App 2.2.7

f#-fake - Paket 依赖组不仅仅是解决版本冲突的一种方法吗?

powershell - 如何从命令行使用paket

.net - 为什么Paket需要三个文件来支持依赖管理?

更新 mono 后 F# 构建无法找到两个包

f# - 是否可以从 paket.lock 中删除不相关的限制?

nuget - Paket include-referenced-projects 与项目引用

f# - 我该如何使用下载的 FsLab 模板?