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

Jac*_*cob 7 nuget

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

这对我们来说效果很好,但我认为我们有一个潜在的问题。看起来 NuGet 根据包名称和版本号解析依赖项。只有一个供稿在起作用,这似乎不是问题。使用多个提要时,存在名称冲突的风险。根据 NuGet 的解析规则,无论提要如何,它看起来都会选择最高版本号。

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

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

1) 将我们依赖的包拉入我们的私人提要。虽然这是可行的,但由于不断将软件包更新下载到我们的私人提要中的管理负担,它并不是很有吸引力。

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

有没有更好的办法?

谢谢你的帮助!

Joh*_*sch 2

使用我们的产品ProGet (本质上它是一个具有附加功能的私有 NuGet 存储库)可以轻松完成此任务,尽管此功能仅在付费版本中可用。本质上,您要做的就是仅指向 Visual Studio 中的 ProGet 托管源。默认情况下,ProGet feeds 连接到官方 NuGet.org feed,并且也能够下载官方 feed 中的所有包。

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

*
!YourPackageNameOrPrefix
Run Code Online (Sandbox Code Playgroud)

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

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