【问题标题】:VS2015 Nuget zombie cacheVS2015 Nuget 僵尸缓存
【发布时间】:2016-09-26 15:58:37
【问题描述】:

我遇到了一个奇怪的问题,即 VS2015 正在缓存具有依赖性问题的(私有)nuget 包的陈旧副本,但该包已经用相同的版本号减去依赖性问题进行了重建。无论我做什么,VS2015 似乎都在某个地方从以太中召唤出这个破旧的包裹。我已经清除了 appdata\local\Nuget\cache(v2 和 v3 缓存)。我已经删除了包文件夹。我已经使用包管理器重新安装了包。似乎没有任何效果。我知道这是一个 VS2015 问题,因为当我运行 VS2012 并从该环境安装包时,安装了正确的包而没有依赖性问题。

有谁知道 VS2015 从哪里得到这个陈旧的包?

【问题讨论】:

    标签: visual-studio-2015 nuget


    【解决方案1】:

    Nuget 将包缓存在 %UserProfile%/.nuget/packages 文件夹中。当你安装一个 nuget 包时,它会先检查缓存,看看这个包是否已经存在。如果是,它将直接从缓存中安装包,而不是从 nuget 源下载。由于您没有更新包 A 的版本,它会将旧包安装在缓存文件夹中。所以你需要清理缓存以使其正常工作。

    顺便说一下,不建议推送多个相同版本的包。有关详细信息,请参阅此类似问题:How does NuGet decide whether to use local package cache or not?

    【讨论】:

      【解决方案2】:

      好吧,很明显:

      C:\Users\username\AppData\Local\NuGet\v3-cache
      

      实际上并不是 v3 缓存。它只是这样命名的,所以你会感到困惑。

      v3 缓存位于此处:

       C:\Users\username\.nuget\packages
      

      这就是我的僵尸包的来源,命令“Update-package -reinstall”,谁的文档没有提到使用缓存,如果它可用,并没有解决这个问题。

      【讨论】:

      • 能否提供VS2015中这个依赖问题的详细步骤?它可以帮助我们重现这个问题并理解它。
      • 我将添加一个带有重现步骤的回复。
      • 另外,我不确定这是否特定于 VS2015。这正是我目前正在使用的。 VS2013中可能会发生同样的事情,但我懒得去检查。
      【解决方案3】:

      重现此错误的步骤。

      1) 创建一个 nuget 包-A,其依赖项引用包-B,即另一个存在的包。

      2) 在项目中安装 package-A(package-B 应该自带)。

      3) 删除包 B(从 nuget 源)并尝试重新安装包 A。您应该在 nuget 找不到依赖项时收到错误消息:package-B。

      4) 修改包 A 以引用仍然可用的旧版本包 B。

      5)尝试在项目中重新安装package-A(现在你已经部署了一个版本号相同的固定nuget包),你会一直报错,直到你清除包缓存。

      【讨论】:

      • 删除包-B后是否重新打包并重新安装包-A?我删除了package-B并重新打包了package-A,但是在我的项目中重新安装package时没有任何错误。
      • @Bitfiddler 能不能增加Package A的版本再试试?随着版本号的增加,它应该可以正常工作。
      • @wendy,是的,我重新打包并尝试重新安装。但是重新安装命令总是从缓存中获取包(直到我手动清除缓存),所以当 Nuget 进行依赖解析并尝试从服务器获取 packageB 的元数据时,它丢失并给出了错误。
      • @Eddie - 增加版本号可能会起作用,但我不喜欢在没有更改内部代码时增加版本号的想法(只有损坏的包引用)。我认为重新安装会从源代码中获取所有内容的新副本,而不是获取缓存的包并将它们重新添加到您的项目中。
      • @Eddie - 我想在我看来,-reinstall 所做的更像是“修复”而不是重新安装。对我来说,如果我正在考虑重新安装一个应用程序,我想我会删除与该应用程序相关的所有内容,然后获取安装程序的新副本(无论是从媒体 cd/dvd/usb 还是从供应商站点重新下载) 并重做安装。 nuget re-install 所做的更像是启动添加/删除程序并运行“修复”以可能修复注册表引用等,但实际上您并没有从源头获得全新安装。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2011-03-14
      • 2012-03-20
      • 2020-05-19
      相关资源
      最近更新 更多