在我的团队工作中,我们依赖两个NuGet提要:NuGet.org上的公共包的官方提要和内部包的文件服务器上的文件夹。
这对我们来说效果很好,但我认为我们有潜在的问题。看起来NuGet根据包名和版本号解析依赖关系。只有一个进场,这似乎不是一个问题。如果有多个Feed,则存在名称冲突的风险。根据NuGet的解析规则,看起来它会选择最高版本号,而不管Feed是什么。
这让我们处于一个位置。这种情况不太可能发生,但如果有人要在NuGet.org上发布一个与我们的内部Feed相同的软件包名称的软件包,我们最终可能会包含一个意外的软件包。
我可以想出两种方法来解决这个问题:
1)将我们依赖的包裹放入私人饲料中。虽然这是可行的,但由于不断将包更新下载到我们的私人订阅源中的管理负担,因此它并不十分吸引人。
2)通过NuGet.org提要发布占位符包以保留包名称。这似乎会起作用,但对我来说感觉就像是黑客。
有更好的方法吗?
感谢您的帮助!
答案 0 :(得分:2)
使用我们的产品ProGet(基本上它是具有附加功能的私有NuGet存储库)可以很容易地实现这一点,尽管这样做的功能仅在付费版本中可用。基本上你要做的是,只指向Visual Studio中的ProGet托管订阅源。默认情况下,ProGet供稿已连接到官方NuGet.org供稿,并且能够下载官方供稿中的所有包。
但是,如果要设置“连接器过滤器”:
*
!YourPackageNameOrPrefix
然后它将阻止与您的名称相同的包从官方订阅源下载。
如果您对第三方解决方案不感兴趣,您可以随时使用极不可能被复制的内容命名您的包(例如YourCompany.XXXXX),但这当然不会阻止任何人复制它目的