NuGet出现丢失包的问题,如何恢复?

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

当我尝试编译程序时,出现以下错误:

This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567.    

现在,当我右键单击解决方案并按

All packages are already installed and there is nothing to restore.

我尝试手动重新安装每个软件包,但没有解决问题,我尝试重新安装 NuGet,但这也没有帮助,我什至尝试重新安装 Visual Studio。

我还尝试将包文件夹从 tfs 文件夹中移动以覆盖我的包文件夹,但这并没有解决任何问题。我还尝试重新下载缺少此软件包的文件,但这也没有解决问题。

有人知道如何恢复nuget包吗?

c# visual-studio visual-studio-2015 nuget nuget-package-restore
10个回答
31
投票

在 Visual Studio 中使用

Package Manager Console
运行此命令。

1.这将从解决方案恢复所有包

nuget restore YourSolution.sln

2.如果您想

重新安装软件包到与之前安装的版本相同

Update-Package -reinstall
    

26
投票
老实说,无论是谁为 VS 开发了 NuGet 命令,都需要回到绘图板。他们完全忽略了这样一个事实:有时这些 DLL 和/或文件会被损坏或删除。 “NuGet Get-Packages -Force”选项确实可以拯救他们的培根。我看到的唯一差距是 VS 和 Package 控制台不允许您从 NuGet 调用强制下载。即使通过VS清除缓存也没有用。


12
投票
当我尝试在解决方案根目录中不存在包文件夹的计算机上构建项目时,我遇到了这个问题。

最初创建项目文件时,VS2019似乎在项目文件中添加了以下内容:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" /> </Target>

据我了解,这些设置现在已被弃用,不知道为什么 VS 首先插入它。

无论如何,删除这些行后,VS 恢复了包并再次正确构建了解决方案。


2
投票
通过删除此目录中的内容来清除 Nuget 缓存可能是个好主意:

C:\Users\{your_username}\AppData\Local\NuGet


    


1
投票
您所需要的只是: 打开包管理器控制台并运行以下命令:

Update-Package -reinstall


P.S:VS2017及以上版本NuGet包管理器包含在Visual Studio中,无需安装其他任何东西。


1
投票
NuGet 包的功能问题也可能是由于以下事实引起的:

NuGet 包需要项目不满足的某些依赖项

NuGet 包可以在

Dependecies 部分中声明依赖项,例如.NETFramework,版本=v.4.6.2,而项目目标是旧版本(目标框架:.NET Framework 4.6.1.)。

NuGet 系统并没有通知用户这一事实,而是项目根本无法编译。


1
投票
就我而言,我有不同的 Nuget 配置,并且不知何故项目文件中的 HintPath 不适合。

也许您应该检查 HintPath 是否指向正确的 NuGetPackages 文件夹。

您还应该检查文件顶部的以下条目:

文件底部:

所有这些路径都应指向文件结构中正确的 NuGetPackage 文件夹。


1
投票
在我的例子中,通过删除“obj”文件夹然后重建解决方案解决了问题。

“obj”文件夹包含多个 NuGet 相关文件,这些文件仍然引用包的 0.0.2 版本,而解决方案中的所有项目都已使用该包的 1.0.0 版本。构建解决方案失败,并显示错误消息“无法找到版本 0.0.2 的包”。最近从另一台机器复制了包含构建文件夹的解决方案。


0
投票
嗯,这可能是一个坏方法,但我发现如果我删除该行,它就可以工作

http://go.microsoft.com/fwlink/?LinkID=317567。" HelpKeyword="BCLBUILD2001" />

来自project.csproj,不确定这是否会在以后引起问题,但目前有效。


0
投票
对我来说,我尝试删除 bin 和 obj 文件夹,重新启动 VS,重新启动我的电脑,但没有成功。不过,跑步

dotnet restore
解决了问题

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