NuGet 的默认包源默认为新添加的源,而不是 All 或 nuget.org

问题描述 投票:0回答:1

我向 Visual Studio 添加了 NuGet“包源”,因为我们有一个内部服务器在工作。

Visual Studio 现在始终默认为我的内部服务器,并且无法找到大多数 NuGet 包,直到我将包源切换到

All
nuget.org

这是一个小小的不便,但在过去的几周里,每次我需要使用 NuGet 包管理器时,我都会进行更多的点击。谁能告诉我如何默认为

All
而不是始终默认为
Internal nuget

visual-studio nuget visual-studio-2017
1个回答
33
投票

谁能告诉我如何默认为“全部”而不是始终默认为“内部 nuget”?

据我所知,NuGet Package Manager 的默认包源取决于包源的顺序以及

activePackageSource
nuget.config
的属性。

包源码顺序:

当您打开 NuGet Package Manager 设置时,Tools->Options->NuGet Packager Manager->Package Source,您会注意到包源有向上和向下箭头:

NuGet 包管理器将优先考虑包源列表顶部的默认 NuGet 包源。例如,如果我在该列表顶部设置 NuGet 包源

LocalServer
,则当我创建新项目时,默认 NuGet 源将更改为
LocalServer
:

但是默认 NuGet 源的优先级很容易被 nuget.config 中的 activePackageSource 属性破坏

从 %appdata%\NuGet\NuGet.config 打开 nuget.config 文件,添加以下代码:

  <activePackageSource>
    <add key="LocalServer2" value="D:\LocalServerTest" />
  </activePackageSource>

重新启动Visual Studio,然后新建一个项目,你会发现默认的NuGet源变成了

LocalServer2

所以,如果您想默认

nuget.org
而不是始终默认为
Internal nuget
,您可以将 NuGet 源
nuget.org
设置在 NuGet 源列表顶部,或者将
nuget.org
设置为
activePackageSource
nuget.config:

  <activePackageSource>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </activePackageSource>

评论更新:

有没有办法默认为All?也许你可以建议默认为“全部”(看起来你为 MS 工作)

如果要将默认 NuGet 源设置为

All
,可以使用
nuget.config
中的以下设置:

  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>

不幸的是,根据文档这仅适用于 NuGet 2.X,并且在 3.X+ 中已弃用。

© www.soinside.com 2019 - 2024. All rights reserved.