恢复Nuget包时出现了“找不到Nuget本地源”的错误,本地源不存在。

34

我收到了一个Visual Studio 2017的解决方案。当我打开它时,出现以下错误:

还原NuGet包时出错:本地源'\\网络位置\'不存在。

我可以手动获取这些包的副本,但我不知道原始路径在哪里配置以及如何更改为新位置。

请问您有什么建议应该在哪里查找?

10个回答

55

在Visual Studio的选项 (工具 -> 选项) 中可以找到包源,路径为 NuGet 包管理器 -> 包源 或者直接通过NuGet对话框中的图标 (右键点击解决方案/项目 -> 管理 NuGet 程序包...) 进入:

图片描述

此时应该会在以下对话框中列出本地包源:

图片描述

包源可能是特定于解决方案或项目的,因此可能会在解决方案目录中的 NuGet.config 文件中指定。从 NuGet 3.4 开始,Visual Studio 会根据 NuGet.config 参考文档 在项目目录或者 "直到驱动器根目录的任何文件夹" 中查找。在 NuGet 3.3 之前,也要搜索名为 .nuget 的子目录以查找 NuGet.config 文件。

为了恢复正确的包,必须更改包含本地包源的文件。


非常感谢!这对我很有帮助。我刚刚进行了文件夹清理并删除了旧项目,其中存在旧Nuget源的源路径。删除未使用的nuget源后,错误已经消失了。 - smily

27

以上提出的解决方案对我来说都没有用。说实话,我真的不喜欢微软现在做的事情:每次安装更新时都会有惊喜。 :-(

分析:

Error occurred while restoring NuGet packages: The local source 'C:\Microsoft\Xamarin\NuGet' doesn't exist.

显然,NuGet试图从"C:\\Microsoft\\Xamarin\\NuGet"中恢复与Xamarin无关的解决方案。该解决方案以前已经编译了很多次,即使从GIT中获取它也没有改变任何东西。所以,问题不在我的解决方案上,它是更全局性的问题。
顺便说一下:我不想使用这个文件夹,因为我不使用Xamarin!
我在我的解决方案的任何obj文件夹中的*.csproj.nuget.dgspec.json文件中找到了以下引用。所有这些json文件都指向这个Xamarin文件夹:
"fallbackFolders": {
  "C:\\Microsoft\\Xamarin\\NuGet": {},  
  "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
  "https://api.nuget.org/v3/index.json": {}
},

问题:Visual Studio如何了解fallbackFolders?

我在我的Visual Studio / NuGet配置设置中没有找到任何提示,就像上面提出的那样。我删除了所有的obj文件夹,但每次尝试编译或还原我的软件包时,引用都会回来。

解决方法

  • 删除您解决方案中的所有obj文件夹(如上所述)

  • 删除c:\Program Files (x86)\NuGet\Config\Xamarin.Offline.config

在那里,您将找到以下内容:

<fallbackPackageFolders>
    <add key="Xamarin Offline Packages" value="C:\Microsoft\Xamarin\NuGet\"/>
</fallbackPackageFolders>

这个文件是一周前在我的电脑上引入的,我想它是随着最新的VS更新(16.2)一起来的。今天的最新更新(16.2.1)并没有带走它。


1
在扫描了我所有的磁盘寻找“c:\microsoft”之后,我才发现了你的答案... :-) 所有这些NuGet的东西每天都变得更加疯狂。我从未允许任何东西创建“c:\microsoft”目录! - Simon Mourier
我在一个项目中遇到了与Service Fabric相关的问题,但实际上并没有使用它。最终我通过访问“c:\Program Files (x86)\NuGet\Config\”并删除Service Fabric文件来解决了这个问题。 - Three Value Logic
好发现!顺便说一下,我不需要删除obj文件夹。我只是将Xamarin.Offline.config重命名,并添加了一个.txt扩展名(以防需要恢复它),然后重新加载我的解决方案;.csproj.nuget.dgspec.json被重新生成,而没有C:\Microsoft文件夹。耶! - Keith Robertson

22
你在使用 Visual Studio 2019 时可能会遇到相同的问题。我也遇到了同样的问题,一开始以为是与 Visual Studio 2017 冲突引起的,但实际上并不是。
解决方法是必须删除导致问题的源文件。
你可以通过 工具 -> NuGet 包管理器 -> 包管理器设置 来删除它。

7
在我的情况中,NuGet 正在寻找项目本身的程序包,但找不到(没错,确实没有),但是它不会尝试默认的 NuGet 服务器。解决方法是取消将本地项目作为软件包来源的选项。然后 NuGet 就可以从 nuget.org 快乐地检索软件包了。 - Andrew Keeton

18
在我的情况下,我遇到了这个错误: 还原NuGet包时出错:本地源 'C:\Microsoft\Xamarin\NuGet' 不存在。
我无意中删除了'C:\Microsoft\Xamarin\'文件夹。 此后,VS2019无法还原软件包。 我只是手动创建了 'C:\Microsoft\Xamarin\NuGet' 文件夹。 重新启动VS,清理解决方案后,问题得到了解决。

1
我为了腾出空间而删除了那个文件夹。结果导致 ASP.NET Core 构建失败。重新创建 C:\Microsoft\Xamarin\NuGet 就解决了问题,无需重启。 - Marius Bughiu
这对我也起作用了。 创建了文件夹C:\Microsoft\Xamarin\NuGet 重新启动了Visual Studio。 - Dymond

13

所有答案都是相关的,但它们并不完整,花了30分钟在这上面浪费了时间。

以下步骤可以解决问题:

1. 清除缓存并删除有问题的文件夹:

Tools > NuGet Package Manager > Package Manager Settings
      > NuGet Package Manager > General > Clear All NuGet Cache(s)

Tools > NuGet Package Manager > Package Manager Settings
      > NuGet Package Manager > Package Sources
                   > Available package sources
                   >   {uncheck the folder that is giving error}
                   >   OK

2. 在VS解决方案中还原NuGet包

Right-click  on  Visual studio solution (not project)
      > Restore NuGet Packages

3. 构建并运行项目

希望这可以帮到你。


6

我在不同的情况下遇到了这个错误。我检查了我的解决方案文件夹中的Nuget.config内容,在<packageSources>节点下,有一个指向./nuget的条目。在解决方案目录中没有这个文件夹,所以我只需创建一个名为nuget的空文件夹,解决方案就可以编译而无需任何问题。


1
在我的情况下,解决这个问题的唯一方法是清理所有的NuGet缓存。 您可以在“工具” -> “NuGet程序包管理器” -> “常规”中找到它。

Clear All NuGet Cache(s) print


0
但我不知道这个原始路径在哪里配置,以及如何将其更改为新位置。
要解决此错误,请在给定的解决方案中搜索文件NuGet.config,然后使用记事本编辑它,您将在该文件中找到以下设置:
  <packageSources>
    <add key="LocalServerName" value="\\network-location\" />
  </packageSources>

你可以将值更改为新位置。


0

相同的情况:

Error occurred while restoring NuGet packages: The local source 'C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages' doesn't exist.

我的解决方案是重新创建文件夹。


因此,与现有答案中的相同错误和相同解决方案一样。那么您提供的额外见解是什么呢?尽管您使用了“我的解决方案”这样的措辞,但您的帖子给人一种“谢谢Laimonas,谢谢Episodex”的印象,来源于https://dev59.com/P1UM5IYBdhLWcg3wAsnv#59887427和https://dev59.com/P1UM5IYBdhLWcg3wAsnv#57971770。请记住,您不应该将“谢谢”作为答案发布,而是应该等待获得投票权限,并在现有的答案帖子上使用它。 - Yunnosch

0
我在命令行为一个Visual Studio .SLN恢复包时遇到了这个问题。
原来,在命令行中使用-source选项指定源是导致解决方案中各个.csproj出现NU1301错误的原因。
当我停止尝试显式指定源时,它开始正常工作。

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