通过 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 包 -
- 在Visual Studio中打开
Tools -> Options
。
- Select
NuGet Package Manager
.
- 确保
Allow NuGet to download missing packages
和 Automatically check for missing packages during build in Visual Studio
都被勾选。
- 点击
OK
。
- 在文件资源管理器中 window 导航到项目的“packages”文件夹。
- 三个选项 -
- 找出原始答案中描述的错误包并删除它的文件夹。
- 如果您不确定所有包在 NuGet 中是否仍然可用,请将所有包移动到一个临时位置(之后您需要将丢失的包复制回来)
- 如果您确定所有包在 NuGet 中仍然可用,请删除所有包文件夹。
- 回到 Visual Studio 构建您的解决方案。
- Visual Studio 应该下载所有包。
原答案
好的,这里的问题是一个包的 .nupkg
文件(在 项目根目录 /packges/ 包文件夹 ) 在某些时候已经损坏并且大小为零。
在尝试使用包管理器控制台手动安装随机包后,我找出了哪个包已损坏 -
Install-Package *package name*
这告诉我当前安装的软件包有问题 -
Install-Package : An error occurred while retrieving package metadata for 'package name'....
从那里我可以通过执行以下操作来修复它 -
- 导航到 NuGet site
- 使用页面顶部的搜索工具搜索项目
- 使用左侧的“下载”link 下载
.nupkg
文件(检查版本号)。
- 将下载的文件复制到“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
我清除了所有这些包(离线存储库)
我正在尝试使用 NuGet(在 VS2015 中)向我的项目添加一个包。当我点击 "Install" 按钮时,我看到
Downloading missing packages...
在屏幕顶部带有进度条。
片刻之后,消息被替换为 -
An error occurred while trying to restore packages: Central Directory corrupt.
末尾有一个 "Restore" 按钮,执行相同的过程。
有人知道如何解决这个问题吗?
编辑 07/2017
解决这个问题的一个更简单的方法是将 Visual Studio 到 re-download 包 -
- 在Visual Studio中打开
Tools -> Options
。 - Select
NuGet Package Manager
. - 确保
Allow NuGet to download missing packages
和Automatically check for missing packages during build in Visual Studio
都被勾选。 - 点击
OK
。 - 在文件资源管理器中 window 导航到项目的“packages”文件夹。
- 三个选项 -
- 找出原始答案中描述的错误包并删除它的文件夹。
- 如果您不确定所有包在 NuGet 中是否仍然可用,请将所有包移动到一个临时位置(之后您需要将丢失的包复制回来)
- 如果您确定所有包在 NuGet 中仍然可用,请删除所有包文件夹。
- 回到 Visual Studio 构建您的解决方案。
- Visual Studio 应该下载所有包。
原答案
好的,这里的问题是一个包的 .nupkg
文件(在 项目根目录 /packges/ 包文件夹 ) 在某些时候已经损坏并且大小为零。
在尝试使用包管理器控制台手动安装随机包后,我找出了哪个包已损坏 -
Install-Package *package name*
这告诉我当前安装的软件包有问题 -
Install-Package : An error occurred while retrieving package metadata for 'package name'....
从那里我可以通过执行以下操作来修复它 -
- 导航到 NuGet site
- 使用页面顶部的搜索工具搜索项目
- 使用左侧的“下载”link 下载
.nupkg
文件(检查版本号)。 - 将下载的文件复制到“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
我清除了所有这些包(离线存储库)