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