惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

.NET

.net framework 项目新样式 数据库迁移报错 - V2EX 知乎网友:“VS2026 还是跑在 .NET Framework 4.8 上,看来 .NET LTS 只有三年的问题还真把微软自己的脖子卡住了” - V2EX .Net 有没有类似若依这种后台框架? - V2EX 应届生刚入职,做的是 wms+mes+mes 二次开发,因为没学过.net+c#,现在接口代码全靠 ai 写怎么办 - V2EX [分享创造] 开源轻量级 WinForm 壁纸切换器 Wallpaper Switcher (C# / .NET 9) - V2EX csharp 这回真成了脚本语言: dotnet run app.cs - V2EX 小弟写了一个 ETLBox 写入数据到 ClickHouse 的组件, 需要用到的兄弟们可以看看 - V2EX C#.net9wpf 项目这份.gitignore 规则可行吗?还有什么可以添加的吗? - V2EX 有人试过从 WCF 迁移到 ASP.NET Core Web API 吗? - V2EX 项目从.NET5.0 升级到 8.0,加起来 1.5 万行代码, Linux 下编译经常要半个小时,有的时候又几秒钟就能编译完, Windows 下一直非常正常,怎么排查? - V2EX 分享一个使用 C#封装的 gRPC 组件 - V2EX C# .NET 现在相对成熟的跨平台 UI 框架是否还是只有 Avalonia? MAUI 怎么样了 - V2EX ASP .NET Core + EF Core + MySQL 这个统计查询在 3 亿条记录的表下每次查询都需要 2~4 分钟,优化的办法只有用触发器或是后台每小时定期统计吗? - V2EX Avalonia UI 更新到 11 以后启动慢有办法优化吗? - V2EX EF Core 这类较重的 ORM 框架适合塞进客户端吗?如果是用于本地 SQLite 数据库,有没有更好的选择? - V2EX Windows 普通用户,可否禁用系统自带.net 3.5/4.8,仅安装最新.net 8/9? - V2EX 同一程序内的消息队列,这样用单例的简易实现比 redis 的 Pub-Sub 效率高吗?如果不实现 Unsubscribe,有内存泄漏风险吗? - V2EX Avalonia 11 后要从 ItemsControl 调用母 UserControl 的命令这种常见操作就必须每次都写这么长一坨东西吗? - V2EX .NET build 到 wasm 后怎么看错误代码在哪个 .cs 文件的哪个位置? DevTools 和那个 Debug URL 里都只能看到 e.Message - V2EX macOS 单用户环境 dotnet 装在 ~/.dotnet/ 还是 /usr/local/share/dotnet/ 更好? Rider 默认是前者,官网下载的 .pkg 默认是后者 - V2EX efcore 中, 使用 FromSql 查询时, 如何设置 where in 参数? - V2EX 有没有 .NET 大神帮忙看看困扰了好几个大神一年的内存泄露问题,优化了一年越变越严重,现在一小时崩一次 - V2EX 有用过 SQLSugar 的吗?能说说体验吗? - V2EX .NET 大牛们,这次遇到了一个涉及知识盲区的 BUG,与 Redis 有关 - V2EX 求助大佬们,干了件蠢事,我都不理解我为什么要用 Rider 去装 SDK,导致现在删不掉也找不到了 - V2EX nuget 服务器有问题了,不会也是那个 CrowdStrike 出问题导致的吧 - V2EX 为什么我已经在 Visual Studio 中安装了.Net 8.0,但是命令行显示的版本仍然是 6.0.31? - V2EX 我使用 vscode,如何平稳的将.Net7.0 升级到.Net8.0? - V2EX 我想重构我这个项目的前端,有什么好的建议? - V2EX 接了个小活,选 Windows 窗体应用还是 WPF 应用? - V2EX AlipaySDKNet.OpenAPI 这个包没多少代码,为什么大小是 14.1MB?里面塞了什么? - V2EX EF Core 不引入锁,高并发场景 ExecuteSqlRawAsync("UPDATE Users SET Balance = Balance + {0} WHERE UserId = {1}");后如何获取 Updated 后的值? - V2EX ASP .NET Core 5 内存占用线性增加, 1 小时内 100%把 128G 内存用完,如果运行 dotnet-gcdump 则能立即恢复正常水平,查了很多文档 gcdump 都是不会去触发 GC 的,但多次尝试都成功,求排查思路 - V2EX 为什么很多文章/工具都是针对.NET Core >3.1 而不是 3.0 的?这个个小版本改动非常大吗? - V2EX ASP.NET Core 在 Linux 下部分接口耗时长、并发性能差,除了逐步打印日志,还有什么方便、直观的办法查出是哪一步耗时长吗? - V2EX 时隔半年,我又来吐槽 nuget 了 - V2EX visual studio code for .NET - V2EX .NET 程序员的迷茫 - V2EX vs2022 win10 关机后再开机如何恢复 - V2EX Avalonia 现在还是灵车吗?连官网文档都能出这么多 bug - V2EX MAUI 在 macOS 上有办法实现关闭窗口后不退出吗? - V2EX ClosedXML 有办法简单实现把 HTML 保留所有颜色和图片插入到一个单元格吗? 我想到的办法是用 AngleSharp 解析,但改了好几个版本效果还是很差 - V2EX 求助(附日志)ASP.NET Core 部署在 Ubuntu 22.04 8 核 32G 阿里云下每月固定出现一次服务器失联情况,具体时间随机,失联后系统盘 IO 爆表,重启可解决,应该从哪里开始排查?完全没思路,附日志 - V2EX 求助 C#有办法在自己程序内部实现一个跨线程的简易消息队列吗?现在这种轮询数据库的实现 CPU 占用率很高, 4C8G 阿 里 云占用一直在 100% - V2EX 请教一下 asp.net core 技术问题 - V2EX .NET 8 发布正式版了 - V2EX .net 的库作者是不是都在向 js 看齐? - V2EX .net 刚通电没有触发怎么用软件主动获取红外传感器的信号。 - V2EX 看来 Windows Forms 依然活的好好的 - V2EX
请教个 .NET Framework 4.0 升级以运行在 arm 上的问题 - V2EX
rrubick · 2025-08-26 · via .NET

这是一个创建于 292 天前的主题,其中的信息可能已经有所发展或是发生改变。

有一个老项目,是用 .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 ,如果用树莓派是否可行。

第 1 条附言  ·  2025 年 8 月 26 日

我麻了大佬们,升级解决不了问题!

- .NET Framework 4.8.1 support arm64 ,可以运行在 ubuntu 上吗
- 这个问题问得很到位 👌

先分清楚概念:

📌 .NET Framework 4.8.1
• 这是 传统的 .NET Framework 的最后一个版本( 2022 年发布)。
• 特点:
• 只能运行在 Windows 操作系统 上。
• 支持 x86 / x64 / ARM64 架构(比如 Windows on ARM 的 Surface Pro X )。
• 所以即使它支持 arm64 CPU ,依然 仅限 Windows 平台。

📌 那能不能在 Ubuntu 上运行?

不行。原因:
• .NET Framework 是 Windows 专属,依赖 Windows 的 CLR (公共语言运行库)、Win32 API 、WPF 、WinForms 等技术。
• Ubuntu 是 Linux 系统,直接不兼容。

📌 那在 Linux/Ubuntu 上要怎么办?
• 你需要用 .NET Core 或 .NET 5/6/7/8 (统一后的 .NET 平台)。
• 这些版本是 跨平台的,原生支持 Windows / Linux / macOS ,而且也支持 arm64 (比如树莓派、ARM 服务器)。

✅ 总结:
• .NET Framework 4.8.1 = Windows Only (支持 arm64 ,但只能 Windows )。
• .NET Core / .NET 5+ = 跨平台( Windows / Linux / macOS ,支持 x64 和 arm64 )。

第 2 条附言  ·  2025 年 8 月 26 日

抱歉误导大佬们了,我没有说清楚。

之前是用 C#开发的依赖 .NET Framework 4.0 运行在 windows 上,现在需要迁移到 arm 的国产系统上运行。

第 3 条附言  ·  2025 年 8 月 26 日

感谢各位大佬!

经过指点,我现在算是对这个任务有了一个大概的了解,但是由于我现在

  1. 没有拿到代码
  2. 客户设备与系统情况未知

导致我无法进行更深层次的尝试。待我后期项目接手后有问题再来请教。

再次感谢!祝各位大佬工作顺利!

  • 升级
  • ARM
  • .net

    49 条回复    2025-08-27 12:09:03 +08:00

    luojianxhlxt

    1

    luojianxhlxt      2025 年 8 月 26 日

    如果 4.8.1 真的支持 arm ,那首选 1 ,代码基本不用改

    ration

    5

    ration      2025 年 8 月 26 日

    如果不是桌面端应用,应该还是比较好迁移的,用.net core ,前期可能修改的比较多,后期维护更好

    Yjhenan

    6

    Yjhenan      2025 年 8 月 26 日   ❤️ 1

    arm 架构的 Windows 系统吗?如果不是,那就迁移到 .NET Core 吧

    Mithril

    8

    Mithril      2025 年 8 月 26 日   ❤️ 1

    还是要看你的项目核心功能在哪,有没有用到一些 Windows 独有的功能,或者一些和系统贴的很近的库。

    虽然都是 Web 应用,但你这程序如果底层用了一些第三方的库,P/Invoke 了一些 C++或者用驱动读写了一些硬件,那大概率是转移不了的。

    或者只是单纯的 Web 应用,但是那种非常传统的 ASP WebForm + IIS ,也用了一堆第三方控件。那迁移也是要重写的。即便是.NET 5 也没有这东西了。

    如果网页结构不是很复杂,建议用.NET Core 自带的新 ASP 直接重写。前端使用现代的框架,Vue 或者 React ,不要用 Blazor 。这样你用 LLM 做 Vibe Coding 很快就能写个差不多的出来。

    另外新的.NET 你可以直接在 Windows 或者其他开发机上写代码,编译的时候再选平台就行了。如果不带 runtime 的话取决于你用的库,纯托管的甚至都可以不选。

    rrubick

    9

    rrubick      2025 年 8 月 26 日

    @Yjhenan #6
    不是,是麒麟。
    我只知道架构会有影响,这个系统也会有影响吗?

    opengps

    10

    opengps      2025 年 8 月 26 日

    只能重写,用 .net7 比较稳妥

    opengps

    11

    opengps      2025 年 8 月 26 日

    @opengps #10 大部分代码都是直接拷贝,但总会有些引用库可能不支持.net7 需要替换或者自己补充逻辑重新实现

    yicong135

    12

    yicong135      2025 年 8 月 26 日

    如果引用的第三方库不一定支持 arm

    irisdev

    13

    irisdev      2025 年 8 月 26 日

    肯定是方案一,迁移到 net core 引用的第三方库的兼容性会把你搞死

    rrubick

    15

    rrubick      2025 年 8 月 26 日

    @Mithril #8
    我也不清楚用了什么库,现在只知道之前项目用 C# 依赖了.NET Framework 4.0 ,然后在一个网页里面调用的,其中有硬件交互。

    虽然都是 Web 应用,但你这程序如果底层用了一些第三方的库,P/Invoke 了一些 C++或者用驱动读写了一些硬件,那大概率是转移不了的
    ------------------
    我理解的是把库和相关方法替换掉就行了,C++那些代码我不用动。所以我不太懂为什么转移不了,请大佬指点。

    rrubick

    17

    rrubick      2025 年 8 月 26 日

    @irisdev #13
    抱歉误导大佬了,我搜了下即使升级也是只支持 windows, 现在我是想跑在 arm 的国产系统上

    unhappy224

    18

    unhappy224      2025 年 8 月 26 日

    可以试试 mono 应该大部分都没问题,之前我试过在 arm mac 下运行 .net 4.5 的 cli 程序,没什么问题

    Mithril

    19

    Mithril      2025 年 8 月 26 日   ❤️ 3

    @magic3584 那很麻烦,如果这活不是砸死你头上了,建议不要接。

    C++,还是硬件驱动,是大概率没法直接二进制跨平台的。你至少也需要重新编译才行。你这.NET Framework 4.0 的项目估计已经很老了,你找对应硬件的 ARM 平台和系统驱动,C++代码就得找半天。找到代码了,编译测试好了,才是你.NET 代码的事。这还是不算你 C++代码根本没法跨平台的事。你那 C++部分要是用了什么 ATL ,MFC ,或者一堆 Windows API ,迁移它还不如重新找个供应商。

    然后你得测试从 C#代码里调用你 C++的 Wrapper ,这个你怎么都要改(至少 Linux 上你的库大概率不叫 x.dll )。这个测试你得用对应平台才行。比如你用 ARM 的 Ubuntu ,甚至用 ARM 的 Windows 11 ,也得找个测试机才可以。

    最后才是你那 Web App ,迁移这层相对来说是最简单的了。

    所以你以为是迁移一个 Web 应用到 ARM 平台,实际上是一整个大深坑。而且最难的根本不在.NET 部分,而是你要把你硬件那堆东西先迁移到 ARM 才行。

    lujiaxing

    20

    lujiaxing      2025 年 8 月 26 日

    这个要看情况. 如果你用了什么 Windows Only 的东西 (如 Windows API), 那大概率无解. 其他你可以考虑用 Mono 托管运行. arm 我没试过, x86 linux 确定以及肯定是可以跑 .NET Framework 开发的程序的.

    lujiaxing

    21

    lujiaxing      2025 年 8 月 26 日   ❤️ 1

    @magic3584 那你这都 P/Invoke 了大概率不得行. 除非你能找到相关 DLL 的 Linux 版. 否则这个是兼容不了的. 这个不是你们的问题, 是三方厂商的问题. 人家乐不乐意给你支持. 你接三方设备三方不给你支持麒麟系统那你做再多都是无意义的.

    rrubick

    22

    rrubick      2025 年 8 月 26 日

    @Mithril #19
    感谢大佬,这活跑不了,硬着头皮也要上的。🥲

    我之前没表述清楚,项目情况是之前用 C#开发的依赖 .NET Framework 4.0 运行在 windows 上,现在需要迁移到 arm 的国产系统上运行。

    您说的这个硬件问题,我估计得找第三方去提供下。那请问如果第三方没有的话这活是不是就没法干了?除非有源码自己去编译?
    还有就是我开发测试的话,机器是只要 arm ubuntu 或者 arm windows 就行呢还是说必须是 arm 的国产化系统才可以?

    urlpha

    23

    urlpha      2025 年 8 月 26 日   ❤️ 1

    这个项目应该通过以上楼主的技术评估后,在执行层面做一次研判:项目复杂度如何,团队成熟度如何(包括业务熟悉度、代码熟悉度两个维度),是否有迁移或改造预算,是否有后续升级的项目预算。
    1 、如果项目复杂,建议不要动任何东西。可能没有太好的解法,有可能甲方写写情况说明可以继续使用,后续做个二期预算全部替代掉。也有可能只能中止。这完全是商务去考虑和推动的问题。
    2 、如不复杂,且团队成熟、有适当的预算,项目迁移.net core 。一些迁移不了的重新开发。
    3 、研判情形较多不一一列举了,综合考量,不排除换语言重新开发的可能性。

    icedx

    25

    icedx      2025 年 8 月 26 日

    时不时可以考虑下 mono 或者 il2cpp

    rrubick

    26

    rrubick      2025 年 8 月 26 日

    @lujiaxing #21
    大佬您的意思是如果第三方硬件不支持麒麟的话我即使用 Mono 也跑不了吗?
    我一点不了解 windows 开发,问题可能有点低级,抱歉

    sujin190

    27

    sujin190      2025 年 8 月 26 日   ❤️ 1

    @magic3584 #15 C++代码也是架构和系统绑定的啊,首先动态链接库 windows 叫 dll ,国产底层都是 linux 叫 so ,就算你有源码都不一定能在过程系统上编译出 so 来,这还有工具链、编译器版本和标准库依赖的问题,没源码的话就歇了吧

    C#代码就算迁移到.net core 如果不是 asp.net 那一套估计工作量感觉还行,否则几乎等同于重写了吧

    Mithril

    28

    Mithril      2025 年 8 月 26 日   ❤️ 1

    @magic3584 对,你得找供应商要这个 ARM 的国产系统对应的驱动和测试程序以及代码。如果他们不提供,那你根本做不了,不是说有测试程序或者驱动的代码重新编译就可以的。

    国产系统大部分都是魔改 Linux ,所以你至少要找个 Linux 驱动才能开始你这活。厂家只提供 Windows 驱动的话,你这活没法做的。

    Windows 和 Linux 的驱动模型不一样,你没法直接拿 Windows 驱动的代码编译一下就跑在 Linux 上。非常简单的通用设备可能还好点,找个通用的开源驱动改改就行了,但涉及到厂家定制的就没办法了,比如加密狗这种。

    你用不惯国产系统开发,可以找个 ARM Linux ,然后找你那国产系统测试。最后即使跑不起来,修改量也不会很大,就是 Debug 级别,改改就行。但你找个 ARM Windows 的话,驱动接口测试程序啥的都不一样,改起来就太麻烦了。

    sujin190

    29

    sujin190      2025 年 8 月 26 日

    国产化系统基本上内核、标准库、编译器都很老了,这些货一个一个都完全没计划考虑定期升级个内核什么的,真是坑死个人的

    nivalxer

    30

    nivalxer      2025 年 8 月 26 日   ❤️ 1

    最佳做法是迁移到.net core 。如果没有用到几个在.net core 中被废弃或者 windows 专有的一些功能
    例如 wcf 不再支持(有第三方库可以支持)、system.drawing 命名空间下的图形处理相关的(有三方库可以支持)
    因为提到的 web 程序,不涉及界面的话,整体迁移成本不大,是 mvc 的还是 mvc ,是 webapi 的还是 webapi 。
    然后就可以一次编辑,全平台运行了。

    irisdev

    31

    irisdev      2025 年 8 月 26 日

    @magic3584 #17 迁到 linux+对接硬件?那很麻烦了,这么老的项目供应商都不一定还活着,还活着的大概率是没有适配麒麟的。界面倒是问题不大,反正你前端是 web 端。

    tangmanger

    32

    tangmanger      2025 年 8 月 26 日   ❤️ 1

    直接升级 到.net 8 就行 前段刚试了 银河麒麟 国产 arm64 windows 下编译好 拷贝过去 启动

    nivalxer

    34

    nivalxer      2025 年 8 月 26 日   ❤️ 1

    才看到提到了有硬件的 DLL 调用的话,那个是不行的,硬件驱动库 dll 除非对方提供其他操作系统下编译的产物,否则是调用不了的。
    我们某些项目也存在类似情况,这种虽然用了.NET ,但是依然只能设置为在 windows 上运行。

    Yjhenan

    35

    Yjhenan      2025 年 8 月 26 日

    @magic3584 #9 .NET Framework 只支持 Windows ,支持 arm 也是 arm 架构的 Windows

    rrubick

    36

    rrubick      2025 年 8 月 26 日

    @Yjhenan #35
    还好我又重新问了 GPT 。
    没办法,对这是一点都不懂,所以即使问了 GPT 也只针对我的提问来回答。

    ZeoKarl

    37

    ZeoKarl      2025 年 8 月 26 日

    那我歪个楼,人和代码只要有一个能跑就行

    rogerhesong

    39

    rogerhesong      2025 年 8 月 26 日   ❤️ 1

    我使用过 jexus 把.NET Framework4.5 的 web 项目迁移到 Linux 平台,目前运行还行,改动也不多

    chenxiansheng

    40

    chenxiansheng      2025 年 8 月 26 日   ❤️ 1

    如果是是为了运行,建议你可以在 arm 系统上弄个 wine 环境,这样不用重构代码简易很多

    loveour

    41

    loveour      2025 年 8 月 26 日   ❤️ 1

    @magic3584 前面有人回复讲的很清楚了。.net 本身迁移不说很简单,至少也不麻烦。最简单粗暴的,直接在 VS 里切环境,然后改报错就行。但是如果你们底层调用了哪些库,那些才是能不能迁移的关键。.net 可以跨平台,但是你们调用的库不一定可以,这个是你们这边的层面没法改的。所以要先调研那个,那个可以才可以进行下一步。

    rrubick

    42

    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.`

    linhua

    44

    linhua      2025 年 8 月 26 日   ❤️ 1

    前几个月刚用了 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

    45

    guanzhangzhang      2025 年 8 月 26 日   ❤️ 1

    国产 arm 麒麟啥的是基于 yum 、apt 的 Linux 系统,你可以上 docker ,就是不知道客户接收 docker 不

    fkmc

    46

    fkmc      2025 年 8 月 26 日

    建议甩锅 反正底层硬件的依赖 99.99% 不支持

    fzdfengzi

    47

    fzdfengzi      2025 年 8 月 27 日   ❤️ 1

    @magic3584 mono 不维护了没关系,.net framework 更早就不维护了。mono 跑.net4.x 是没问题的,以前有项目用过。但是你的硬件调用那块,c++的 dll 得换成.so 文件才行。
    但是有条件的话,建议程序用.netcore 重构一下吧,更好维护。

    roundgis

    48

    roundgis      2025 年 8 月 27 日 via Android
    rrubick

    49

    rrubick      2025 年 8 月 27 日 via iPhone

    @fzdfengzi #47
    对于我这种 0 经验的,重写属实难度很大,非必要不重写