VS2015 Nuget zombie cache

时间:2016-09-21 21:00:46

标签: visual-studio-2015 nuget

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

显然很好:

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

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

v3 Cache位于此处:

 C:\Users\username\.nuget\packages

这就是我的zombie软件包的来源,而命令“Update-package -reinstall”,其文档没有提及使用缓存(如果可用),并不能解决这个问题。

答案 2 :(得分:0)

重现此错误的步骤。

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

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

3)删除package-B(来自nuget源)并尝试重新安装package-A。你应该得到一个错误,其中nuget找不到依赖:package-B。

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

5)尝试在项目中重新安装package-A(现在您已部署了具有相同版本号的固定nuget包),在清除包缓存之前,您将继续收到错误。