Yan*_*nko 13 versioning nuget nuget-package
今天我在安装软件包时遇到了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.exePowerShell会话完成的.
更新:我观察到奇怪的行为我只能通过缓存过期来解释.缓存包时,所有后续调用都会nuget install从缓存中提取包,直到一段时间过去.我没注意到确切的时间段,但肯定超过一个小时.在此之后,nuget install更新缓存中的包,情况变得相同......
Jua*_*gui 12
严,
NuGet将其下载的软件包缓存在本地硬盘上.对于我的Windows 7机器,缓存位于C:\ Users\jmelosegui\AppData\Local\NuGet\Cache.因此,您可以从本地缓存目录中删除要忘记的nuget包.然后,下次安装软件包时,您将从服务器获得最新版本.
顺便说一句:我同意@ matthew-skelton.
您不应该使用特定版本推送多个包:包应该是不可变的.如果您更改了包中的内容,请增加内部版本号abC并推送新版本的包.
我希望这种方法适合你的场景
Mat*_*ton 10
严,
我推送另一个MyPackage更新 - 仍然是版本
1.0.0.
您不应该使用特定版本推送多个包:包应该是不可变的.如果您更改了包中的内容,请增加内部版本号a.b.C并推送新版本的包.
您遇到的行为是NuGet期望能够无限期地缓存给定包版本的副作用.
| 归档时间: |
|
| 查看次数: |
8406 次 |
| 最近记录: |