NuGet 中的包依赖项解析和命名冲突

2024-04-22

在我的工作团队中,我们依赖两个 NuGet 源:来自 NuGet.org 的官方源用于公共包,文件服务器上的文件夹用于内部包。

这对我们来说效果很好,但我认为我们有一个潜在的问题。看起来 NuGet 根据包名称和版本号来解析依赖项。由于只有一个饲料在起作用,这似乎不是问题。如果有多个提要,则存在名称冲突的风险。根据 NuGet 的解析规则,看起来它会选择最高的版本号,而不管 feed 是什么。

这让我们陷入了困境。这种情况不太可能发生,但如果有人在 NuGet.org feed 上发布一个包,并且该包与我们的内部 feed 上的包名称相同,那么我们最终可能会包含一个意外的包。

我可以想到两种方法来解决这个问题:

1) 将我们依赖的包拉到我们的私人 feed 中。虽然这是可行的,但它并不是很有吸引力,因为不断将软件包更新下载到我们的私人源中会带来管理负担。

2) 通过 NuGet.org feed 发布占位符包以保留包名称。这似乎可行,但对我来说感觉就像是黑客。

有没有更好的办法?

感谢您的帮助!


使用我们的产品可以很容易地实现这一点ProGet http://inedo.com/proget(本质上它是一个具有附加功能的私有 NuGet 存储库),尽管此功能仅在付费版本中可用。本质上,您要做的就是仅指向 Visual Studio 中的 ProGet 托管源。默认情况下,ProGet feeds 连接到官方 NuGet.org feed,并且也能够下载官方 feed 中的所有包。

但是,如果您要设置以下“连接器过滤器”:

*
!YourPackageNameOrPrefix

然后它会阻止从官方源下载与您的名称相同的软件包。

如果您对第三方解决方案不感兴趣,您可以随时使用不太可能被复制的内容来命名您的包(例如 YourCompany.XXXXX),但这当然不会阻止任何人故意复制它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NuGet 中的包依赖项解析和命名冲突 的相关文章

随机推荐