Nuget包的本地源不存在。

54
在另一台计算机上打开项目并在 VS Code 上运行后,出现了以下问题:
C:\Program Files\dotnet\sdk\2.2.300\NuGet.targets(121,5): error : The 
local source C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\' 
doesn't exist.

我已经找到了Visual Studio的解决方案,但没有找到Visual Studio Code的解决方案。

我有意想要指向可能存在或不存在的路径,是否可以告诉NuGet停止疯狂并在文件夹不存在时忽略它? - justin.m.chase
10个回答

96

包源很可能在%appdata%\nuget\nuget.config中定义。使用您喜欢的xml /文本编辑器(例如VSCode)编辑此文件。您应该在package sources元素下看到一个添加元素,该元素添加了该文件路径。将其注释掉或删除该行。

如果不在该文件中,请尝试运行dotnet restore --verbosity normaldotnet restore -v n。如果仍然只收到错误消息,请尝试运行dotnet new nugetconfig或暂时创建C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\目录。使用普通详细程度,NuGet将输出所有已读取的nuget.config文件列表。打开每个文件,直到找到定义不存在的本地源的文件,以便您可以编辑并删除它。或者只需保留空目录。

还有可能包源是在MSBuild文件中定义的,而不是在nuget.config文件中。如果是这种情况,则可能需要运行dotnet msbuild -pp来生成经过预处理的文件(处理所有导入以创建一个“独立的”msbuild文件)。然后,在该文件中搜索找不到的路径,然后向上滚动,直到找到指定定义路径的注释。然后选择编辑该文件。

然而,创建一个空的目录可能更容易些。


14
“dotnet new nugetconfig” 对我很有帮助,非常感谢! - Caio César S. Leonardi
编辑nuget.config对我有用。你知道为什么一开始会发生这种情况吗? - Khant Htet Naing
我曾经遇到过这个问题,后来发现我的 Nuget.config 文件在一个名为 .nuget 的文件夹中。一旦我将该文件移动到解决方案文件夹中,问题就得到了解决。此链接提供了一些额外的信息。链接 - mcolegro
我必须打开包源选项并在那里更新自定义包源。 - Gregory Bologna
2
当我受够了Visual Studio并决定使用Rider并删除了Visual Studio时,这个答案帮助我解决了问题。 - Aleksej_Shherbak
"dotnet new nugetconfig" 对我也起了作用。谢谢。 - lucapan

33
我遇到了一个类似的错误,阻止了nuget restore命令的工作,但路径不同: C:\Program Files\dotnet\sdk\3.1.100\NuGet.targets(132,5): error : The local source C:\work\nuget doesn't exist. 我通过从以下位置删除该路径来修复它: Visual Studio ▶ Tools ▶ Options ▶ Nuget Package Manager ▶ Package Sources 更新:
在 macOS 和 Linux 上,您可以删除~/.nuget

2
我遇到了类似的错误,但路径不同:%appdata%\Roaming\NuGet\NuGet.Config。编辑此配置文件解决了我的错误。 - Dipthong
这个文件在 macOS 和 Linux 上的位置在哪里? - Aaron Franke
@AaronFranke 可能在 macOS 上的路径为:/usr/local/share/dotnet/(如果是 ARM64 架构)或者 /usr/local/share/dotnet/x64/dotnet/(如果是 x64 架构),或者可能在这里:/usr/local/share/dotnet/dotnet。对于 Linux,请使用路径 ~/.dotnet - Bizhan
1
我最后在 macOS 上删除了 ~/.nuget,这样就解决了问题。 - Aaron Franke

13

打开PowerShell窗口,输入以下代码: dotnet new nugetconfig


9

我采用了更加直观的方法来解决这个问题,请看

✍编辑1:可能的原因是,您的项目可能引用了离线包,这些包与您的第一台计算机相关联。当您在另一台计算机上进行操作时,它无法识别您的离线包的本地源路径。

  1. 列表项
  2. 列表项
  3. 列表项
  4. 列表项 完成了!

6

尽管错误似乎与 NuGet 无关,但实际上是有关联的。

打开 PowerShell 并运行以下命令:

dotnet new nugetconfig

3
因为这条消息说文件夹不存在,所以我创建了它,问题就解决了。是的,就这么简单。
顺便说一下,在 GitHub 上有一个关于类似问题的讨论,Microsoft 的 Rob Relya 写道

这是设计行为。如果你的任何源不可访问,我们会失败地恢复。 我们不想为你创建一个文件夹,以防它是一个错别字。

从我的角度来看,没问题。

谢谢!上面的命令或其他解决方案都没有起作用。 - Jimit Vaghela

1
我在 DevOps 中遇到了与 .net core 恢复任务有关的同样问题(图片1,2)。我通过从 NuGet.config 文件中删除离线包引用(图片3)来解决这个问题。

1

我有些困惑答案不太理解,但其中一些可能有解决方案。最终帮助我的方法:

I edited C:\Windows\System32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config
and removed <packageSources> with the value "..\NuGet.Config"

不确定是如何出现的,实际值可能因人而异。


0
我遇到了以下错误。
错误 NU1301:本地源'C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages'不存在。
之前我不小心删除了整个共享文件夹(因为磁盘已满,所以在清理),所以出现了这个错误。
在阅读了@zivkan在顶部的答案后,我创建了一个名为NuGetPackages的文件。但是这并没有解决问题,因为我们需要创建一个文件夹(目录),而不是文件。所以在创建了一个名为NuGetPackages的文件夹后,dotnet restore又正常工作了。
当然,您需要管理员权限来创建该文件夹。

0

我正在将我的dontet MVC项目从.Net core 2.2升级到3.1,并添加对Microsoft.Extensions.Configuration.AzureAppConfiguration的引用。当时我遇到了这个问题。我所做的就是从nuget.config中删除"add key="Local" value=".References"",这个问题就解决了。我现在可以引用这个包了。


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