请教个 .NET Framework 4.0 升级以运行在 arm 上的问题

2025 年 8 月 26 日
 rrubick

有一个老项目,是用 .NET Framework 4.0 开发,在 web 页面调用并运行在 windows 上。 现在有一个需求:需要迁移到 arm 上运行。

我搜索了一下,解决方案是:

  1. 升级到 .NET Framework 4.8.1 及以后版本,原生支持 arm
  2. 用 .NET Core (.NET 或者 ASP.NET ) 重写

由于本人从未接触此类开发,所以有疑问想请教大佬:

  1. 以上哪种方案对于我来说是比较省心的
  2. 我是否必须要在 arm 架构的机器上开发,比如 MacOS 、arm Ubuntu ,如果用树莓派是否可行。
4895 次点击
所在节点    .NET
49 条回复
loveour
2025 年 8 月 26 日
@magic3584 前面有人回复讲的很清楚了。.net 本身迁移不说很简单,至少也不麻烦。最简单粗暴的,直接在 VS 里切环境,然后改报错就行。但是如果你们底层调用了哪些库,那些才是能不能迁移的关键。.net 可以跨平台,但是你们调用的库不一定可以,这个是你们这边的层面没法改的。所以要先调研那个,那个可以才可以进行下一步。
rrubick
2025 年 8 月 26 日
@chenxiansheng #40
claude 给了我这个选项,不过我看不是很稳定的样子
`3. Containerization with Wine (Not Recommended)
Running Windows applications on Ubuntu using Wine - generally not suitable for production.`
rrubick
2025 年 8 月 26 日
@loveour #41
嗯,已经先去确认第三方硬件是否兼容麒麟系统了。
linhua
2025 年 8 月 26 日
前几个月刚用了 Jexus ,是.NET Framework 4.5 的 项目, 在 arm 服务器上,成功跑通了。

Jexus 是基于 mono 的 ,内部集成了 mono

可以运行 c#编译的 dll ,就是用 mono ,也可以用国产的 Jexus (这个比较方便,有问题可以加入 qq 群问,作者回复也挺及时)。 建议先仔细看完官网上的用户手册 https://www.jexus.org/Manuals 再提问


至于如果是 c++ 编译的 dll ,估计不太行。
因为 c#编译成的 dll,类似于 java 编译成的 class 文件,都是字节码,可以跨平台,跨架构。c++ 编译的 dll 就是 依赖于目标平台,目标架构了。
guanzhangzhang
2025 年 8 月 26 日
国产 arm 麒麟啥的是基于 yum 、apt 的 Linux 系统,你可以上 docker ,就是不知道客户接收 docker 不
fkmc
2025 年 8 月 26 日
建议甩锅 反正底层硬件的依赖 99.99% 不支持
fzdfengzi
2025 年 8 月 27 日
@magic3584 mono 不维护了没关系,.net framework 更早就不维护了。mono 跑.net4.x 是没问题的,以前有项目用过。但是你的硬件调用那块,c++的 dll 得换成.so 文件才行。
但是有条件的话,建议程序用.netcore 重构一下吧,更好维护。
roundgis
2025 年 8 月 27 日
試試看用 mono 能不能運行

不行就重寫
rrubick
2025 年 8 月 27 日
@fzdfengzi #47
对于我这种 0 经验的,重写属实难度很大,非必要不重写

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1154926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX