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

Unable to restore / remove / update a NuGet package because the mentioned version is no longer available

我正在尝试对 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

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

An error occurred while trying to restore packages: Unable to find version '2.1.0-pre-131116-b279' of package 'Microsoft.AspNet.SignalR.Client'

如果找不到当前版本,如何安装更新版本的指定包?

我正在使用:

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

[更新]

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

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

您可以通过以下方式手动移除依赖:

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

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

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

希望对您有所帮助

对我有用的是:

1。转到 packages.config 文件,

2。查找“... id="Microsoft.AspNet.SignalR.Client" version="" targetFramework="net45"..."

3。更改为现有版本,例如“2.2.0”。

4。保存。

5。转到 Nuget,并更新到最新版本。

@ferarias 在评论中提到 - 如果您正在使用 nuget.exe,请尝试更新它或下载 latest version.

对我来说,从 v4.4.1 升级到 v4.6.2 足以修复 Some NuGet packages are missing 错误。

就我而言,我重新启动了 visual studio。然后我从 package.config 中删除了 nuget 包条目。

之后我能够恢复依赖性。