NuGet packageSources优先级

NuGet packageSources优先级,nuget,Nuget,如果在NuGet.config中有多个packageSources: <packageSources> <clear /> <add key="dev" value="http://server2/branches/feature1/nuget" /> <add key="release" value="http://server1/nuget" /> </packageSources> 运行nuget安装等时是否使用

如果在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,那么feature1 branch上的开发频道版本会赢吗?

您的源在nuget.config中的顺序决定了它们在从Visual Studio进入nuget的各种视图的下拉菜单中显示的顺序。在所有情况下,您都可以选择从哪个提要安装。请参见下面的屏幕截图

VisualStudio不跟踪包的来源,因此包ID实际上位于全局命名空间中,您必须知道它是哪个提要的一部分。Visual Studio将向您显示所选源中具有匹配ID的任何包,因此您可能会使用其他源中的另一个包覆盖从一个源安装的包

对于我在公司管理的NuGet提要,我在内部包前面加上
,以降低现在和将来发生命名冲突的风险


谢谢。实际上,我正试图根据顺序来覆盖。这样,基于packageSources构建在功能分支上的包将获得更高的优先级。这样,将包含相同的包名,仅针对特定分支构建。这样我们就不需要彻底改变依赖关系。如果功能提要中缺少一个包,它将从常规主线提要中提取。您是否可以将另一个nuget.config文件签入到您的功能分支中?这样,您可以为这些分支指定一个“发布提要”,例如在主干中指定一个“开发提要”。那么,当我从命令行运行nuget restore时会发生什么情况?如果一个包同时位于两个源中,它将使用哪个源?@red888在还原时出于所有目的,最快的源将获胜。如果可能的话,我会避免依赖优先顺序。优先级排序导致了性能问题,因为对源的调用是顺序的,而不是并行的。