V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX  ›  .NET

项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查?

  •  1
     
  •   drymonfidelia · 1 天前 · 2330 次点击
    服务器是 aws m8g.2xlarge 8 核 32GB 内存
    整个服务器上就一个 Docker ,里面运行这个服务
    以前 .NET 5 的都是秒编译
    现在经常要半个小时,有时甚至五六个小时编译不完
    有时候又能 2 秒编译,不知道为什么
    `docker system prune -a` 运行了好几遍,没效果



    开 Debug 是因为刚才想试试是不是 Release 导致的编译缓慢才改的,并不是导致问题的原因
    第 1 条附言  ·  15 小时 16 分钟前
    看我的 log ,restore 和 build 是完全分开的,restore 最多 50 秒 我用的是 aws ,应该不存在网络不稳定
    25 条回复    2025-03-26 14:00:01 +08:00
    hez2010
        1
    hez2010  
       1 天前
    可以试试给 dotnet build 加几个参数:-clp:PerformanceSummary -tl:false
    这样能看到编译时间到底花在了具体哪个任务上
    liuliuliuliu
        2
    liuliuliuliu  
       1 天前
    这很显然需要一个日志来看看时间都花费在哪里了。
    build 的时候加个参数吧
    dotnet build -bl:SpecificStep.binlog
    supemaomao
        3
    supemaomao  
       1 天前 via Android
    如果是编译为镜像,那么原因可能是 net8 不支持仿真编译了,你需要更改编译的命令,让其使用交叉编译。这个问题之前遇到过。
    drymonfidelia
        4
    drymonfidelia  
    OP
       1 天前
    @hez2010 加上了,但是似乎没有输出别的东西
    drymonfidelia
        5
    drymonfidelia  
    OP
       1 天前
    好奇怪的问题,似乎同一套代码,刚才测试 1 楼的参数 3 分钟就编译完了,现在测试 2 楼的参数又编译了 10 分钟还没出来,每次编译时间完全随机
    kk2syc
        6
    kk2syc  
       1 天前
    @drymonfidelia 或许是 linux 下编译器的问题呢?而不是项目代码
    netnr
        7
    netnr  
       20 小时 31 分钟前   ❤️ 5
    估计是 dotnet restore 下载资源网速不稳定

    改善网络
    外面发布文件,再基于发布文件+runtime 打包,避免编译
    beginor
        8
    beginor  
       20 小时 6 分钟前 via Android
    加上加个 no restore ,不联网检查 nuget 包, 看看是不是网络问题
    tusj
        9
    tusj  
       18 小时 57 分钟前
    说两个微软给我的印象:
    1 、大学时第一次接触 Visual Studio ,进去之后字体默认是宋体,编程字体用非等宽,写出来那个代码看着非常膈应!(当然可以调整,但非要让每一个人一上来都调整一遍?这不就做事做不到位,招人恶心嘛)。第一次印象就很差,任你网上再吹什么宇宙第一 IDE ,内心还是抗拒。
    2 、dotnet7 出来的时候,试了一下,Mac 电脑上命令行 init 一个项目,要好几秒。我心想,就建几个空目录,要好几秒?印象又一次很差!直接从 init 到放弃!任你网上吹什么不考虑工作生存压力,心中理想代码什么写 C#, 什么 dotnet 别提多爽云云。。。我内心还是抗拒,完全不信!
    dabao
        10
    dabao  
       18 小时 46 分钟前
    换一台 linux 编译,排查下
    billbob
        11
    billbob  
       18 小时 31 分钟前
    买个墙外服务器编译,就是下载网络问题,不用看
    liuidetmks
        12
    liuidetmks  
       18 小时 27 分钟前
    哥们,你到底是干嘛的,高强度刷 V 站发帖,各方面问题都涉及,业务这么广的吗
    kneo
        13
    kneo  
       18 小时 21 分钟前
    跑个 benchmark 吧。有时候是服务器的问题。
    qW7bo2FbzbC0
        14
    qW7bo2FbzbC0  
       18 小时 13 分钟前
    墙内下载依赖包的确是会有网络问题
    chunqiu233
        15
    chunqiu233  
       17 小时 54 分钟前
    @liuidetmks 哈哈
    nmap
        16
    nmap  
       17 小时 2 分钟前
    现在.net 还能开发 linux 的应用了?
    w568w
        17
    w568w  
       16 小时 58 分钟前
    @nmap 14 年就支持了吧,.NET 早就改名 .NET Core 了
    a33291
        18
    a33291  
       16 小时 49 分钟前
    @nmap 现在是真正意义的跨平台和架构(包括龙芯之类) 😁
    asuraa
        19
    asuraa  
       16 小时 44 分钟前
    是不是加 arm 了 如果你加 arm 和 arm64 之类的确实是这样的,我用 github action 编译 x86 非常快,但是一旦启用 arm64 就慢成屎, 甚至会超时
    jstony
        20
    jstony  
       16 小时 38 分钟前   ❤️ 1
    @w568w .net core 已经入土,现在就叫.net
    w568w
        21
    w568w  
       16 小时 34 分钟前
    @jstony 微软改名部
    cenbiq
        22
    cenbiq  
       15 小时 49 分钟前
    @nmap .net fx (~2016 ) > .net core ( 2016~2020 ) > .net ( 2020~)
    drymonfidelia
        23
    drymonfidelia  
    OP
       15 小时 27 分钟前
    @netnr 你看我的 log ,restore 和 build 是完全分开的,restore 最多 50 秒 我用的是 aws ,应该不存在网络不稳定
    liuliuliuliu
        24
    liuliuliuliu  
       15 小时 25 分钟前
    @nmap 2025 年了还能有人问出这个问题……
    netnr
        25
    netnr  
       14 小时 18 分钟前
    build 会内部调用 restore ,你可以创建一个空项目,无任何依赖打包,对比一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   981 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:18 · PVG 04:18 · LAX 13:18 · JFK 16:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.