项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查?
服务器是 aws m8g.2xlarge 8 核 32GB 内存
整个服务器上就一个 Docker ,里面运行这个服务
以前 .NET 5 的都是秒编译
现在经常要半个小时,有时甚至五六个小时编译不完
有时候又能 2 秒编译,不知道为什么docker system prune -a 运行了好几遍,没效果
开 Debug 是因为刚才想试试是不是 Release 导致的编译缓慢才改的,并不是导致问题的原因
可以试试给 dotnet build 加几个参数:-clp:PerformanceSummary -tl:false
这样能看到编译时间到底花在了具体哪个任务上
这很显然需要一个日志来看看时间都花费在哪里了。
build 的时候加个参数吧
dotnet build -bl:SpecificStep.binlog
如果是编译为镜像,那么原因可能是 net8 不支持仿真编译了,你需要更改编译的命令,让其使用交叉编译。这个问题之前遇到过。
加上了,但是似乎没有输出别的东西
好奇怪的问题,似乎同一套代码,刚才测试 1 楼的参数 3 分钟就编译完了,现在测试 2 楼的参数又编译了 10 分钟还没出来,每次编译时间完全随机
或许是 linux 下编译器的问题呢?而不是项目代码
估计是 dotnet restore 下载资源网速不稳定
改善网络
外面发布文件,再基于发布文件+runtime 打包,避免编译
加上加个 no restore ,不联网检查 nuget 包, 看看是不是网络问题
说两个微软给我的印象:
1 、大学时第一次接触 Visual Studio ,进去之后字体默认是宋体,编程字体用非等宽,写出来那个代码看着非常膈应!(当然可以调整,但非要让每一个人一上来都调整一遍?这不就做事做不到位,招人恶心嘛)。第一次印象就很差,任你网上再吹什么宇宙第一 IDE ,内心还是抗拒。
2 、dotnet7 出来的时候,试了一下,Mac 电脑上命令行 init 一个项目,要好几秒。我心想,就建几个空目录,要好几秒?印象又一次很差!直接从 init 到放弃!任你网上吹什么不考虑工作生存压力,心中理想代码什么写 C#, 什么 dotnet 别提多爽云云。。。我内心还是抗拒,完全不信!
换一台 linux 编译,排查下
买个墙外服务器编译,就是下载网络问题,不用看
哥们,你到底是干嘛的,高强度刷 V 站发帖,各方面问题都涉及,业务这么广的吗
跑个 benchmark 吧。有时候是服务器的问题。
墙内下载依赖包的确是会有网络问题
哈哈
现在.net 还能开发 linux 的应用了?
14 年就支持了吧,.NET 早就改名 .NET Core 了
现在是真正意义的跨平台和架构(包括龙芯之类) 😁
是不是加 arm 了 如果你加 arm 和 arm64 之类的确实是这样的,我用 github action 编译 x86 非常快,但是一旦启用 arm64 就慢成屎, 甚至会超时
.net core 已经入土,现在就叫.net
微软改名部
几百块钱都这么扣,这辈子不可能赚到钱了 每月涨 300 ,这么爽啊,要能一直这么涨下去,那大后期岂不是起飞。 只涨 300 ,一年 3000 多哈 跟互联网完全没法…
K40 PixelExperience 版本 12 第一版已推出,有哪位大哥试水 感觉 lineageos 比 pe 要稳定一些, 当然尝鲜的话另说, 手上 k40 现在用的…
现在许多网站都要求强密码,2FA 甚至 n-FA ( n factor authentication)。 但是我一直觉得这其实就是安全责任转嫁: 在用了这些措施之后,账号安全性…
合速度