已迁移 Visual Studio 项目未找到 NuGet 包

Migrated Visual Studio Project not finding NuGet packages

我正在将 MVC ASP.NET Visual Studio 2010 项目迁移到 Visual Studio 2019。

Visual Studio 2010 项目使用了一些旧的 jQuery NuGet 包,由于时间限制以及整个项目中不适合的大量更改,我无法更新到当前包我当前的范围。

迁移的 2019 项目显示了一些与 NuGet 包相关的错误:

NuGet Package restore failed for project MyWebProject: Unable to find version '3.2.0' of package 'Microsoft.jQuery.Unobtrusive.Ajax'.
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'Microsoft.jQuery.Unobtrusive.Ajax.3.2.0' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'.
  Please see Error List window for detailed warnings and errors.            

NuGet Package restore failed for project MyWebProject: Unable to find version '2.1.1' of package 'jQuery'.
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'jQuery.2.1.1' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'.
  Please see Error List window for detailed warnings and errors.        
...
...
...

在 Visual Studio 2019 项目中,当我查看已安装的 NuGet 程序包时,我看到列出了程序包,但显示了一条消息 Not available in this source

根据错误消息,Visual Studio 正在 C:\Program Files(x86)\Microsoft SDKs\NuGetPackages 中查找软件包;但是它应该在名为 "packages" 的目录中查找,该目录实际上包含这些包。

我已将包目录放在与项目相同的目录中(但最好将它们放在公共资源目录中,以便团队可以找到它们when/if他们正在处理这个项目).我还编辑了包目录中的 repositories.config 文件以指向项目的 packages.config 文件。

如果需要,我可以将所有这些恢复为默认值。

我所做的一切都没有帮助我解决这个问题。

如何指示 Visual Studio 2019 使用存在于 Program Files 目录之外的目录中的软件包?

谢谢

How do I direct Visual Studio 2019 to use the packages that exist within a directory that is not the Program Files directory?

根据您的错误信息:请前往Tools=>Options=>Nuget Package Manager检查您的包源设置。

可能您还没有检查 nuget.org 作为您的包源。请检查此设置:

在 VS 中,当您单击 Restore Nuget Packages 选项时,它将搜索包 from available sources。大多数时候我们需要恢复的包来自Nuget Gallery。就像 JQuery 2.1.1 一样,所以默认情况下我们将设置 nuget.org 作为我们必要的包源。

我检查过是否取消选中 nuget.org 然后我遇到了和你一样的问题。

所以请:

1.Check将nuget.org作为你的包源,如果不存在,点击绿色+新建一个源,并将其源设置为https://api.nuget.org/v3/index.json

2.If nuget.org 以检查状态存在,确保其 link 是正确的 另外:

however it should be looking in a directory named "packages" that actually contains the packages.

如果你说的packages文件夹是Solution directory中的文件夹:在我看来,Restore Nuget Package并不意味着searching sources from the packages folder,而是会搜索包如果 packages folder 中缺少某些内容,则将它们从 available package sources 安装到 packages folder。(对于 packages.config 格式)