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

C# 怎么同时交叉编译 windows Linux mac ?跟 go 一样

  •  
  •   yuaotian · 92 天前 · 1264 次点击
    这是一个创建于 92 天前的主题,其中的信息可能已经有所发展或是发生改变。

    好奇,怎么同时编译三个系统的执行文件? go 就可以,C#在发布里面没找到,搜索引擎资料也很少,跟着编译也不行。

    开发:vs2022 、Rider

    10 条回复    2024-09-26 09:35:53 +08:00
    supemaomao
        2
    supemaomao  
       92 天前 via Android
    如果直接用 vs 编译的话我没试过,但是我用 vs 开发,编译为 docker 镜像,是可以交叉编译为 amd 和 arm 的。理论上在 vs 中也是可以的。
    sagaxu
        3
    sagaxu  
       92 天前
    dotnet publish -c release -r win-x64
    dotnet publish -c release -r linux-x64
    dotnet publish -c release -r osx-x64
    Al0rid4l
        4
    Al0rid4l  
       92 天前
    @fgwmlhdkkkw 这是 AOT, 但是 LZ 问的也不是 AOT 啊...
    nikenidage1
        5
    nikenidage1  
       92 天前
    nikenidage1
        6
    nikenidage1  
       92 天前
    如果说是“同时”
    那么你需要在 csproj 中写明平台,例如
    <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
    然后只需要 dotnet publish 就可以了
    参见
    https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#runtimeidentifier
    lisxour
        7
    lisxour  
       92 天前
    native 不太清楚,但是你完全可以用.net core
    LLaMA2
        8
    LLaMA2  
       92 天前
    yuaotian
        9
    yuaotian  
    OP
       89 天前
    好的,感谢大家~~~
    CodeCodeStudy
        10
    CodeCodeStudy  
       50 天前
    简单来说,AOT 是不能交叉编译的,非 AOT 的话如果把 runtime 打包进去也是不能交叉编译的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5493 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:55 · PVG 14:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.