今天我遇到了一个奇怪的NuGet安装包行为。
简要描述:由于我的构建脚本,有一个NuGet包。我不会每次更改版本,因此每次构建都会生成MyPackage.1.0.0.nupkg
。作为构建的最后一步,我将包推送到部署在本地网络内的NuGet服务器。
现在,在另一台机器上,我运行nuget install MyPackage -Source http://myserver/nuget
,显然会安装NuGet包。
问题出现在当我推送另一个版本为1.0.0
的MyPackage
更新时。当我试图在客户端机器上重新安装它时,我得到的是先前版本的包。
我发现这是本地缓存的问题:如果已安装了该包,则会进入本地缓存,下一次安装相同版本的包时,它将从缓存中获取。很公平!
另一方面,nuget install
命令有一个 -NoCache
选项,我期望它会忽略本地缓存。
但是,事实并非如此。第一次使用 -NoCache
运行时,它会更新缓存并安装最新版本。但是,下一次安装包仍然从缓存中获取,即使使用了 -NoCache
选项。
这是预期的吗?是因为版本没有更改吗?
以防万一:所有 NuGet 操作都是使用 NuGet.exe
和 PowerShell 会话完成的。
更新:我观察到奇怪的行为,只有缓存过期才能解释。当包被缓存时,所有后续调用 nuget install
都会从缓存中提取包,在一段时间过后,我没有注意到确切的时间,但它肯定超过一个小时。此后,nuget install
更新缓存中的包,情况变得相同...