nuget - NuGet 中的包依赖解决方案和命名冲突

标签 nuget

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

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

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

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

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

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

有没有更好的办法?

谢谢你的帮助!

最佳答案

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

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

*
!YourPackageNameOrPrefix

然后它将阻止与您的同名软件包从官方提要中下载。

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

关于nuget - NuGet 中的包依赖解决方案和命名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21153475/

相关文章:

c# - “System.Net.Http”已经具有为 'System.Runtime' 定义的依赖项

.net-core - dotnet core nuget 包在还原时复制内容文件

c# - 检索 *** 的包元数据时出错

.net - 使用 Visual Studio 2017 构建 Docker 失败,因为在使用私有(private) nuget 源的 dotnet 还原期间超时

c++ - nuget 包管理器包含在 VS 2015 中设置的目录在哪里?

nuget - 如何手动创建Nuget包(没有Nuget.exe或Nuget Explorer)?

azure - 如何干净地自动化 Azure Devops 源的身份验证?

nhibernate - NuGet:NHibernate、CaSTLe.Core 3.0 和 ProxyFactoryFactory 在哪里?

asp.net - 在 App_Start 中编辑 MiniProfiler.cs 后更新 MiniProfiler.MVC3 NuGet 包

c# - 多个解决方案引用的项目的 Nu-Get 和项目级别依赖性问题