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