通过 Nuget 安装包 - "Central Directory corrupt"

Installing Packages through Nuget - "Central Directory corrupt"

我正在尝试使用 NuGet(在 VS2015 中)向我的项目添加一个包。当我点击 "Install" 按钮时,我看到

Downloading missing packages...

在屏幕顶部带有进度条。

片刻之后,消息被替换为 -

An error occurred while trying to restore packages: Central Directory corrupt.

末尾有一个 "Restore" 按钮,执行相同的过程。

有人知道如何解决这个问题吗?

编辑 07/2017

解决这个问题的一个更简单的方法是将 Visual Studio 到 re-download 包 -

  1. 在Visual Studio中打开Tools -> Options
  2. Select NuGet Package Manager.
  3. 确保 Allow NuGet to download missing packagesAutomatically check for missing packages during build in Visual Studio 都被勾选。
  4. 点击OK
  5. 在文件资源管理器中 window 导航到项目的“packages”文件夹。
  6. 三个选项 -
    • 找出原始答案中描述的错误包并删除它的文件夹。
    • 如果您不确定所有包在 NuGet 中是否仍然可用,请将所有包移动到一个临时位置(之后您需要将丢失的包复制回来)
    • 如果您确定所有包在 NuGet 中仍然可用,请删除所有包文件夹。
  7. 回到 Visual Studio 构建您的解决方案。
  8. Visual Studio 应该下载所有包。

原答案

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

在尝试使用包管理器控制台手动安装随机包后,我找出了哪个包已损坏 -

Install-Package *package name*

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

Install-Package : An error occurred while retrieving package metadata for 'package name'....

从那里我可以通过执行以下操作来修复它 -

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

删除 \packages\ 下的所有 nuget 包(我有多个损坏的包)

转到 Visual Studio 中的解决方案并按 "Restore Nuget Packages"

重建您的解决方案

应该修复:)

1.First 全部阅读错误

2.Find 错误控制台上列出的目录。 1.File 资源管理器 ==>>

例如,我的路径是。 C:\Code\Ex_Nikesh\packages 在Packages中找到Microsoft.SqlServer.Types.xx.xxx.xx.xx(xx表示版本号)

3.Inside 文件夹找到 Microsoft.SqlServer.Types.xx.xxx.xx.xx.nu(Nuget 包文件 [在我的例子中文件大小为 0 KB]) 删除该文件。

4.现在下载文件并粘贴到Microsoft.SqlServer.Types.xx.xxx.xx.xx文件夹 Click Here for Download Nuget File

我的问题是以下文件夹中的 zip 文件已损坏: C:\Program Files (x86)\Microsoft SDKs\NuGetPackages

我清除了所有这些包(离线存储库)