这个问题目前是假设的,但有一个真实的基础。
供应商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是闭源的,所以我们不能重新编译它。
答案 0 :(得分:0)
如果更改包ID,则无法覆盖包依赖关系,如果可以,则可以创建自定义版本。 NuGet支持SemVer预发行版本,因此您可以将具有相同ID的包推送到具有版本2.1.9-internally-fixed
的私有订阅源(甚至添加[]
括号以指示固定版本依赖性)。如果让所有顶级项目都依赖于此版本,它们将覆盖其他依赖项。请注意,如果包依赖于2.1.9
,则可能会导致降级警告。