You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows机器上为Linux编译C# .NET Core应用程序

完全可行,具体操作方法如下

一、先确认项目基础

你的控制台项目得是.NET Core 3.1、.NET 5及以上版本的——.NET Framework不支持跨平台编译,别选错框架。右键项目→属性,就能查看目标框架。

二、为什么dotnet build生成Windows文件?

dotnet build -r linux-x64做的是依赖框架的编译,产出的.dll文件得在Linux上用dotnet命令才能运行,不会生成直接可执行的Linux程序。要生成能直接运行的文件,必须用dotnet publish,且开启独立部署模式。

三、解决发布时的MSB4803错误

这个错误是因为你的.csproj项目文件里包含了GenerateBootstrapper相关配置,而.NET Core版本的MSBuild不支持这个任务。修改项目文件即可解决:

  1. 右键项目→编辑项目文件(打开Deser.csproj)
  2. 找到并删除类似以下的内容:
    <GenerateBootstrapper>true</GenerateBootstrapper>
    <!-- 或者任何包含Bootstrapper的PropertyGroup、Target节点 -->
    
  3. 保存文件后重新执行发布命令。

四、正确的跨平台发布命令

执行这条命令生成Linux x64的独立可执行文件:

dotnet publish Deser.csproj -r linux-x64 -o D:\test -c Release --self-contained true
  • -r linux-x64:指定目标运行时为Linux 64位,其他Unix系统可替换为对应的RID(比如Mac用osx-x64,Ubuntu 22.04用ubuntu.22.04-x64,输入dotnet rid list可查看所有可用RID)
  • --self-contained true:生成的部署包自带.NET运行时,目标Linux机器无需提前安装.NET环境
  • 发布完成后,D:\test目录下会出现名为Deser(无后缀)的Linux可执行文件,将整个目录复制到Linux机器,给文件添加执行权限(chmod +x Deser)即可直接运行。

五、额外注意点

  • 代码中不要使用Windows专属API(比如注册表操作、System.Windows.Forms组件等),否则在Linux环境下会运行失败。
  • 要适配多个Unix系统,只需替换对应的RID重复执行发布命令即可。

内容的提问来源于stack exchange,提问作者Alex Fiks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:22:39