如何优化.Net Core中Logary项目的编辑-运行循环耗时?
解决Logary性能测试中Paket全量还原的问题
哎呀,这个Paket全量还原的问题确实挺磨人的,尤其是在做性能测试的时候,每次小改动都要等半天,太影响效率了。我结合Paket和.NET Core的使用经验,给你几个可行的方案试试:
1. 用Paket局部还原缩小范围
Paket本身支持只还原特定项目或依赖组,不用每次都扫整个仓库。你可以试试这两个命令:
- 仅还原Benchmarks组的依赖:
paket restore --group Benchmarks - 仅还原PerfTests项目的依赖:
paket restore ./src/Logary.PerfTests/Logary.PerfTests.fsproj
这样就能避免触发全仓库的依赖扫描,大大减少CPU占用和等待时间。
2. 调整Rider的Paket自动还原设置
Rider默认的自动还原行为可能会偷偷触发全量操作,你可以改一下设置:
- 打开
Settings > Build, Execution, Deployment > NuGet > Paket - 取消勾选「Automatically restore Paket dependencies on project load」,或者改成「Only restore when solution is loaded」
- 之后手动执行上面的局部还原命令,再运行性能测试,代替IDE自动触发的全量还原。
3. 拆分更轻量化的解决方案
既然你已经试过Core项目的解决方案,不如再进一步:
- 专门为PerfTests创建一个独立的小解决方案,只包含它直接依赖的项目(比如Logary核心库+PerfTests本身),排除仓库里其他无关项目
- 给PerfTests单独配置一个Paket依赖组,让还原操作只聚焦在这个组的包上,进一步缩小范围。
4. 确保Paket缓存正常工作
Paket会把下载的包缓存到本地目录(默认是~/.paket/cache),如果缓存失效或者被清理,每次还原都会重新下载包,导致耗时剧增。你可以:
- 检查缓存目录是否存在,且有足够空间
- 设置
PAKET_CACHE_DIR环境变量,指定一个不会被清理工具误删的稳定位置 - 手动清理旧缓存后重新执行一次局部还原,让Paket重新生成有效缓存。
5. 排查跨项目依赖的强制还原问题
有时候小改动触发全量还原,可能是因为PerfTests间接引用的项目里有配置导致强制还原。你可以:
- 检查PerfTests项目文件里的
<RestoreProjectStyle>配置,确保没有设置成强制全量还原 - 查看Paket的引用配置,确认没有不必要的跨项目依赖被标记为「Always Restore」。
内容的提问来源于stack exchange,提问作者Henrik
相关产品推荐
相关产品推荐

