通过Nuget安装软件包 - "中央目录损坏"

Joh*_*n C 10 visual-studio nuget visual-studio-2015

我正在尝试使用NuGet(在VS2015中)为我的项目添加一个包.当我点击"安装"按钮时,我看到了

下载丢失的包...

在屏幕顶部有一个进度条.

过了一会儿,消息被替换为 -

尝试还原包时发生错误:中央目录损坏.

最后使用"恢复"按钮执行相同的过程.

任何人都知道如何解决这个问题?

Joh*_*n C 18

编辑07/2017

解决此问题的一种更简单的方法是让Visual Studio重新下载包 -

  1. 在Visual Studio中打开Tools -> Options.
  2. 选择NuGet Package Manager.
  3. 保证双方Allow NuGet to download missing packagesAutomatically check for missing packages during build in Visual Studio都打勾.
  4. 点击OK.
  5. 在文件资源管理器窗口中,导航到项目的"packages"文件夹.
  6. 三种选择 -
    • 找出原始答案中描述的哪个包有问题并删除其'文件夹.
    • 如果你不确定它们是否仍然可以在NuGet中使用,那么将所有包移动到一个临时位置(之后你需要复制丢失的包)
    • 如果您确定所有程序包在NuGet中仍然可用,请删除所有程序包文件夹.
  7. 回到Visual Studio构建您的解决方案.
  8. Visual Studio应该下载所有包.

原始答案

好吧,这里的问题是.nupkg一个包的文件(在项目root/packges/package文件夹中找到)在某些时候已经损坏并且大小为零.

尝试使用软件包管理器控制台手动安装随机软件包后,我发现哪个软件包损坏了 -

Install-Package *package name*
Run Code Online (Sandbox Code Playgroud)

告诉我当前安装的包有问题 -

Install-Package:检索'package name'的包元数据时发生错误....

从那里我可以通过以下方式解决它 -

  1. 导航到NuGet 站点
  2. 使用页面顶部的搜索工具搜索项目
  3. .nupkg使用左侧的"下载"链接下载文件(检查版本号).
  4. 将下载的文件复制到"packages"文件夹中的旧文件上.