如何替换第三方nuget包的依赖项?

时间:2017-05-09 03:05:07

标签: nuget branch dependency-management

这个问题目前是假设的,但有一个真实的基础。

供应商X的NuGet包A依赖于供应商Y的NuGet包B和Microsoft的System.Runtime。

我们发现有必要将B(它的开源)分支到B'修复B中Y不愿修复的错误。让我们说我们在B' (这肯定最终会成真)。

项目Q取决于A和B'

如何让nuget完全糊涂。我有一个用于构建nuget缓存目录的脚本,但如果我们可以运行nuget restore并获得正确的答案,那将会更有意义。

理论上我们可以说我们可以发布B'到nuget.org,但B阻碍了上传不会采取的方式。没有机会说服X使用我们的B'而不是Y的B和X是闭源的,所以我们不能重新编译它。

1 个答案:

答案 0 :(得分:0)

如果更改包ID,则无法覆盖包依赖关系,如果可以,则可以创建自定义版本。 NuGet支持SemVer预发行版本,因此您可以将具有相同ID的包推送到具有版本2.1.9-internally-fixed的私有订阅源(甚至添加[]括号以指示固定版本依赖性)。如果让所有顶级项目都依赖于此版本,它们将覆盖其他依赖项。请注意,如果包依赖于2.1.9,则可能会导致降级警告。