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

如何在Linux系统上编译面向.NET Core的Windows.Forms应用程序

跨平台编译Windows Forms应用解决方案

.NET Core 3.0及以上版本才正式加入官方Windows Forms支持,默认Linux环境下的.NET SDK不会预装Windows桌面运行时组件,但可以通过指定运行时目标、引入对应依赖包的方式实现编译需求,具体方案如下:

方案1:推荐使用.NET SDK 6.0+ 编译(支持.NET Core 3.0以上所有版本)

这是兼容性最好、功能最完整的实现方式,操作步骤:

  • 首先在Linux环境安装.NET SDK 6.0或更高的长期支持版本
  • 编辑你的项目.csproj文件,参考如下结构配置:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <!-- 可根据需求替换为netcoreapp3.0、net5.0-windows等值 -->
    <TargetFramework>net6.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <!-- 如需生成不依赖系统运行时的独立包,可取消下行注释 -->
    <!-- <SelfContained>true</SelfContained> -->
  </PropertyGroup>
</Project>
  • 执行编译命令 dotnet build 即可生成面向Windows的可执行文件,编译过程中SDK会自动拉取Windows Forms相关依赖,无需本地预装Windows桌面运行时
  • 如需生成生产环境可用的发布包,执行 dotnet publish -c Release 即可

方案2:.NET Core 2.0兼容方案

.NET Core 2.0本身没有官方Windows Forms支持,必须面向该版本时可使用兼容包实现:

  • 编辑.csproj文件,指定TargetFramework为netcoreapp2.0,添加NuGet包引用Microsoft.Windows.Compatibility,该包包含Windows Forms的向下兼容实现
  • 直接执行dotnet build即可完成编译,注意该版本仅支持.NET Framework 4.6.1及以下的Windows Forms API,高版本功能会缺失

注意事项

  • 编译生成的Windows Forms可执行文件仅能在Windows系统上运行,Linux本身不支持原生运行Windows Forms程序,如需跨平台运行桌面应用建议改用AvaloniaUI等跨平台UI框架
  • 不要使用Mono编译.NET Core/.NET 5+的Windows Forms应用,二者的Windows Forms实现不兼容,会出现大量运行时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:27:03