无法恢复/删除/更新NuGet包,因为上述版本不再可用

Meh*_*ran 37 visual-studio nuget

我试图给SignalR Sample一个测试驱动器,但它似乎引用了一个不再可用的旧版SignalR.实际的问题是NuGet无法在没有首次恢复的情况下删除不可用的包!

PM> Install-Package Microsoft.AspNet.SignalR
Install-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.
At line:1 char:1
+ Install-Package Microsoft.AspNet.SignalR
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Run Code Online (Sandbox Code Playgroud)

然后会有一个Restore按钮Package Manager Console,按下它将导致以下错误:

An error occurred while trying to restore packages: Unable to find version '2.1.0-pre-131116-b279' of package 'Microsoft.AspNet.SignalR.Client'
Run Code Online (Sandbox Code Playgroud)

如果找不到当前版本,如何安装较新版本的寻址包?

我正在使用:

Microsoft Visual Studio Community 2015
Version 14.0.24720.00 Update 1
Microsoft .NET Framework
Version 4.6.01038
NuGet Package Manager   3.3.0
Run Code Online (Sandbox Code Playgroud)

[UPDATE]

当我尝试卸载麻烦的包时:

PM> Uninstall-Package -Id Microsfot.AspNet.SignalR -RemoveDependencies -Force
Uninstall-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.
At line:1 char:1
+ Uninstall-Package -Id Microsfot.AspNet.SignalR -RemoveDependencies -F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Uninstall-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.UninstallPackageCommand
Run Code Online (Sandbox Code Playgroud)

Joe*_*ins 30

您可以通过以下方式手动删除依赖项

  1. 关闭Visual Studio(不是硬性要求,但很有帮助)
  2. 在文本编辑器中,从packages.config中删除依赖项
  3. 从packages /目录中删除包
  4. 在文本编辑器中,从.csproj文件中删除对包的所有引用
  5. 启动Visual Studio
  6. 通过NuGet重新安装包

  • Upvoted,因为它的工作...但这是疯了!如果NuGet包不再可用,肯定有一个更容易处理的方法吗? (13认同)

小智 12

如果您知道Feed中当前存在的版本,则可以使用更简单的解决方案.该解决方案可以修复每个项目中的每个包.

  • 打开packages.config文件(如果你有多个项目,为每个packages.config文件执行此操作)
  • 将版本更新为正确的版本(即更改版本属性)
  • 在程序包管理器控制台中,键入 Update-Package -Reinstall

希望能帮助到你

  • 这对我不起作用,Update-Package只是出现“解决方案中缺少某些NuGet软件包。需要还原这些软件包才能构建依赖关系图。请在执行任何操作之前还原这些软件包。”。那是他们去那里的好机会22。 (2认同)
  • 是的,这比接受的答案容易得多.一旦我发誓永远不再这样做,我就这样做了,唉.永远不要说永远,但这使得它变得更加容易,特别是对于数百个项目的解决方案.+1(但它会重新安装一切) (2认同)