NuGet 有丢失包的问题,如何恢复?
Posted
技术标签:
【中文标题】NuGet 有丢失包的问题,如何恢复?【英文标题】:NuGet has problems with missing packages, how to restore? 【发布时间】:2016-10-30 16:25:56 【问题描述】:当我尝试编译我的程序时,我收到以下错误:
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 包吗?
【问题讨论】:
【参考方案1】:在 Visual Studio 中使用 Package Manager Console
运行此命令。
1.这将来自解决方案的restore all packages
nuget restore YourSolution.sln
2.如果你想reinstall the packages到之前安装的版本
Update-Package -reinstall
【讨论】:
nuget restore TestEnvi.sln give me the error The term 'restore' is not recognized as the name of a cmdlet, function, script 有一个解决方法。在您的解决方案文件夹中应该有一个“包”目录。打开这个目录并删除所有目录,然后再次运行reinstall。 命令nuget restore mysolution.sln
在包管理器控制台窗口中对我不起作用,我收到此错误:“PM> nuget restore reco.sln nuget : The term 'nuget' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
”
谢谢,第一次运行这个:Install-Package NuGet.CommandLine 然后上面对我有用
'Update-Package -reinstall' 帮助了我。非常感谢。【参考方案2】:
老实说,为 VS 开发 NuGet 命令的人需要回到绘图板上。他们完全忽略了有时这些 DLL 和/或文件被损坏或删除的事实。 “NuGet Get-Packages -Force”选项真的可以节省他们的培根。我看到的唯一 GAP 是 VS 和 Package 控制台不允许您从 NuGet 调用强制下载。即使通过 VS 清除缓存也没有用。
【讨论】:
太正确了。一种解决方法是从您的项目中卸载软件包,然后重新安装它们。糟透了。 现在是 2020 年,这仍然是破碎的 2022 年还在继续。【参考方案3】:当我尝试在解决方案根目录中不存在 packages-folder 的计算机上构建项目时遇到了这个问题。
最初创建项目文件时,似乎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 恢复了包并再次正确构建了解决方案。
【讨论】:
谢谢,这为我解决了。不知道为什么将这个引用放在我的项目文件中。【参考方案4】:通过删除此目录中的内容来清除 Nuget 缓存可能是个好主意:C:\Users\your_username\AppData\Local\NuGet
【讨论】:
我试过了,但并没有解决问题(即使在重新启动 VS 之后)【参考方案5】:您只需要:
打开包管理器控制台并运行以下命令:Update-Package -reinstall
P.S:VS2017 及以上版本的 NuGet 包管理器包含在 Visual Studio 中,无需安装其他任何东西。
【讨论】:
【参考方案6】:NuGet 包的功能问题也可能是由于 NuGet 包需要项目不满足的某些依赖项。
NuGet 包可以在 Dependecies 部分声明依赖项,例如.NETFramework,Version=v.4.6.2,而项目针对的是旧版本(目标框架:.NET Framework 4.6.1.)。
NuGet 系统没有通知用户这一事实,项目根本无法编译。
【讨论】:
【参考方案7】:就我而言,我有不同的 Nuget 配置,并且项目文件中的 HintPath 不知何故不适合。
也许您应该检查 HintPath 是否指向正确的 NuGetPackages 文件夹。
您还应该检查文件顶部的以下条目:
在文件的底部:
所有这些路径都应指向文件结构中正确的 NuGetPackage 文件夹。
【讨论】:
【参考方案8】:在我的情况下,问题是通过删除“obj”文件夹然后重建解决方案来解决的。
“obj”文件夹中有几个与 NuGet 相关的文件,这些文件仍然引用包的 0.0.2 版本,而解决方案中的所有项目都已使用该包的 1.0.0 版本。构建解决方案失败,并显示错误消息“找不到版本 0.0.2 的包”。包含构建文件夹的解决方案是最近从另一台机器复制的。
【讨论】:
【参考方案9】:嗯,这可能是一个不好的方法,但我发现如果我只是删除该行就可以了
http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
来自 project.csproj ,不确定这是否会在以后引起问题,但现在可以使用。
【讨论】:
以上是关于NuGet 有丢失包的问题,如何恢复?的主要内容,如果未能解决你的问题,请参考以下文章