Visual studio 通过Nuget安装软件包-“安装”;“中央目录损坏”;

Visual studio 通过Nuget安装软件包-“安装”;“中央目录损坏”;,visual-studio,visual-studio-2015,nuget,Visual Studio,Visual Studio 2015,Nuget,我正在尝试使用NuGet(在VS2015中)向我的项目添加一个包。当我点击“安装”按钮时,我看到 正在下载丢失的软件包 在屏幕顶部有一个进度条 过了一会儿,消息被替换为- 尝试还原包时出错:中心目录已损坏 最后有一个“还原”按钮,执行相同的过程 有人知道如何解决这个问题吗?编辑2017年7月 解决此问题的一个简单得多的方法是让VisualStudio重新下载包- 在Visual Studio中打开Tools->Options 选择NuGet Package Manager 确保选中了允许NuGe

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

正在下载丢失的软件包

在屏幕顶部有一个进度条

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

尝试还原包时出错:中心目录已损坏

最后有一个“还原”按钮,执行相同的过程


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

编辑2017年7月

解决此问题的一个简单得多的方法是让VisualStudio重新下载包-

  • 在Visual Studio中打开
    Tools->Options
  • 选择NuGet Package Manager
  • 确保选中了
    允许NuGet下载缺少的软件包
    在Visual Studio中构建期间自动检查缺少的软件包
  • 单击
    OK
  • 在文件资源管理器窗口中,导航到项目的“包”文件夹
  • 三种选择-
    • 按照原始答案中的描述找出哪个软件包有故障,并删除它的文件夹
    • 如果不确定NuGet中是否仍有所有包,请将所有包移动到临时位置(之后需要将丢失的包复制回来)
    • 如果您确定所有包在NuGet中仍然可用,请删除所有包文件夹
  • 回到VisualStudio,构建您的解决方案
  • VisualStudio应该下载您的所有软件包

  • 原始答案

    好的,这里的问题是一个包的
    .nupkg
    文件(在project root/packges/package文件夹中找到)在某个点已损坏,大小为零

    在尝试使用PackageManager控制台手动安装随机软件包后,我发现哪个软件包已损坏-

    Install-Package *package name*
    
    这告诉我当前安装的软件包有问题-

    安装程序包:检索“程序包名称”的程序包元数据时出错

    从那时起,我就可以通过执行以下操作来修复它-

  • 导航到指向NuGet的
  • 使用页面顶部的搜索工具搜索项目
  • 使用左侧的“下载”链接下载
    .nupkg
    文件(检查版本号)
  • 将下载的文件复制到“packages”文件夹中的旧文件上

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

    转到Visual Studio中的解决方案并按“还原Nuget软件包”

    重建您的解决方案


    应修复:)

    1.首先读取错误

    2.查找错误控制台上列出的目录。 1.文件资源管理器==>>

    例如,我的路径是。 C:\Code\Ex\u Nikesh\20\packages 在包中查找Microsoft.SqlServer.Types.xx.xxx.xx(xx表示版本号)

    3.在文件夹内查找Microsoft.SqlServer.Types.xx.xxx.xx.xx.nu(Nuget程序包文件[在我的示例中,文件大小为0 KB]) 删除该文件。

    4.现在下载文件并粘贴到Microsoft.SqlServer.Types.xx.xxx.xx.xx文件夹中

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


    我清除了所有这些包(脱机存储库)

    我也遇到了这个问题。你的解决方案奏效了,谢谢!知道是什么原因吗?@Zero3恐怕不知道。在我发现这个问题之前不久,我想我的git存储库(项目所在的存储库)遇到了问题,但我认为这与此无关。我也是。在通过VisualStudio2015切换Git中的分支时出现了一些奇怪的问题,必须通过还原所有本地更改来强制使用Ortoisegit。可能相关…面临相同的问题,并通过解决方案“还原NuGet程序包时出错:找不到中心目录记录的结尾”来解决此问题