还原操作如何选择NuGet源?

How does restore operation choose NuGet source?

在 Visual Studio 中,我定义了 2 个包源:默认 nuget.org 和一个自定义源。恢复包时,Visual Studio如何知道选择哪个来恢复各种依赖?

我找到了这个post(What NuGet sources are used for restore?),但是,它并没有真正给出最终答案。

How does restore operation choose NuGet source?

实际上恢复机制将首先从本地缓存(C:\Users\Administrator\.nuget\packages)恢复包如果你已经安装了包之前在你的代理中,然后它将检查 Tools->Options-->Nuget Package Manager-->Package Sources 下的 nuget 包网络资源,并从下载丢失的 nuget 包他们。

在这种情况下,NuGet 忽略包源的顺序,并使用第一个来源的包来响应请求。参见 this link。如果您当前的两个包源中都有此包,我认为您选择下载的 URL 取决于 url 请求的速度。

要更直接地查看您当前的项目响应,试试这个:

--------如果你的项目是基于Net Framework:

1) 下载nuget.exe cli on this link 然后复制本地路径nuget.exe on 系统环境变量路径。在我这边,它是C:\tools\nuget.exe,我将路径C:\tools复制到PATH

注意:完成后需要重启VS Instance。

2) 使用 nuget restore 命令行来恢复项目而不是 Restore Nuget Packages UI 按钮。

Tools-->Nuget Package Manager-->Package Manager Console 然后

键入:nuget restore -v detailed 然后你可以找到这个:

并且可以直接找到恢复包源。

--------如果你的项目是基于new sdk:

您可以输入:

dotnet restore -v detailed