NuGet包源优先级

8

如果你的 NuGet.config 文件中有多个 packageSources:

<packageSources>
  <clear />
  <add key="dev" value="http://server2/branches/feature1/nuget" />
  <add key="release" value="http://server1/nuget" />
</packageSources>

运行 NuGet 安装等操作时,XML 中的顺序是否起作用? 如果我在两个版本中都有版本 1.0.0-SNAPSHOT 的 PackageA,那么功能1分支上的开发频道版本会胜出吗?

1个回答

3
您在nuget.config中的订阅顺序决定了在Visual Studio中从各种视图进入NuGet时它们出现在下拉菜单中的顺序。 在所有情况下,您都可以选择从哪个源安装包。请参见下面的屏幕截图。
Visual Studio不会跟踪软件包来自何处,因此软件包ID实际上是全局命名空间,您必须知道其所属的源。 Visual Studio将显示选定源中与匹配ID相对应的任何软件包,因此您可能会使用不同源中的另一个软件包覆盖已从一个源安装的软件包。
对于我公司管理的NuGet源,我使用前缀来减少现在和将来命名冲突的风险。

enter image description here

enter image description here


谢谢。实际上,我正在尝试根据顺序进行覆盖。这样,基于功能分支构建的软件包将根据packageSources具有更高的优先级。这样,http://ourserver/featurebranch1/nuget 将包含相同的软件包名称,只是针对特定分支进行构建。这样,我们就不需要直接更改依赖关系。如果从功能源中缺少软件包,则会从常规主线源中获取。 - Skeeterbug
你能否在你的功能分支中检入一个不同的nuget.config文件?这样你就可以为那些分支指定一个“发布源”,而在主干中则指定一个“开发源”。 - Frank Bryce
1
当我从命令行运行nuget restore时,如果一个包在两个源中,它会使用哪个源? - red888
在恢复时间,最快的源获胜。如果可能的话,我会避免依赖优先级顺序。优先级排序会导致性能问题,因为对源的调用是顺序而不是并行的。 - imps
2
这不是一个安全风险吗?如果有人成功将一个名为YourCompanyName.NugetPackage的包发布到公共NuGet Feed上,会发生什么?是否存在恶意包被安装的可能性? - Omkar Khair
2
这确实是一个安全风险。Nuget为什么没有实现源优先级或包引用级别的源规范? - scuba88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接