blazor开发桌面应用

发布日期:2025-10-05 01:42浏览次数:

早上起来泡了杯咖啡,想着整个桌面小工具玩玩。之前看到有人讨论blazor能做桌面端,我心说这玩意儿不是写网页的吗?好奇心上来拦不住,撸起袖子就开干。

踩坑第一步:装家伙事儿

微软官网翻了半天,总算搞明白.NET 6是必须的。装完SDK又折腾Visual Studio,插件装得我眼都花了。新建项目时手一抖选了个Blazor Server App,跑起来才反应过来这玩意得联网才能用,气得我直接删项目——我要的可是拔了网线也能用的本地程序!

柳暗花明

重新创建项目时瞪大了眼,终于在犄角旮旯里找到Blazor WebAssembly App,勾选下面那行小字"* Core Hosted"的时候手指头都在抖。结果生成的项目还是网页架构,菜单里"发布到Windows"的按钮灰的跟水泥似的。

  • 搜关键字踩雷: "blazor desktop"翻出八百种方案
  • GitHub乱撞: 看到个叫BlazorDesktop的项目,readme写了三页配置步骤
  • 官方文档挖宝: 在微软角落文档里抠出BlazorHybrid这个词

安装MAUI的时候电脑风扇直接起飞,12个G的安装包下得我午饭都吃完了还没完事儿。装完创建.NET MAUI Blazor App项目,编译报错提示缺Windows App SDK,反手点进nuget管理器装了个,重启VS才看见模板。

上正轨反被噎

新建的MAUI Blazor项目跑起来居然是个安卓模拟器!盯着左上角"Local Machine"下拉框看了五分钟,才发现要手动切成Windows模式。好不容易显示桌面窗口了,修改razor页面里的按钮颜色,热重载愣是没反应。

硬着头皮关掉程序重新跑,界面是更新了,但是:

  • 字体糊成马赛克: 明明设置了高清图标,显示效果跟打了马赛克似的
  • 窗口尺寸失控: 拖拽边框时内容区域疯狂抖动
  • 离线崩溃: 关了wifi直接白屏,说好的桌面程序?

调教折腾实录

翻issues发现要装WebView2运行时,微软官方的离线包足足130MB。打包成安装程序发给隔壁屋同事测试,结果他电脑直接报错"依赖项缺失"。用Inno Setup把WebView2运行库捆进安装包,这才在纯净系统跑起来。

搞客户端存储又被坑——localStorage在桌面端权限受限。换成MAUI的文件API读写文本,保存路径藏得比谍战片密码本还深:

写文件代码:
var docsPath = *(*);
读出来全是乱码,编码切了八百遍才搞定。

意外的破局点

凌晨两点改CSS框架时,Blazor的组件化突然灵光一闪。把数据表格封装成razor组件,在MAUI里直接当控件用。最绝的是之前写的网页版工具,整个项目直接拽进MAUI工程,改几行路由配置居然完美运行!

打包的msi安装包居然有78MB,用户点开秒进主界面。公司测试机跑起来CPU占用才2%,老张还问我是不是用C++重写了。结果他看完代码冷笑:"这不就是套壳浏览器吗?" 我反手给他看任务管理器——内存占用比微信少一半,这哥们当场闭嘴。

真实生存体验

成品刚用两天就翻车:最小化到托盘再恢复,界面直接卡成PPT。断点调试时发现WebView2吃内存跟喝水似的,用了个阴招:
@if(isWindowActive){ 渲染组件 }
配合窗口状态事件动态卸载组件,内存直接降了60%。

现在这工具已经跑了半个月没崩,就是任务栏图标偶尔发神经变成灰色方块。上周五我试图加个自动更新功能,nuget装了,结果更新完直接循环闪退。老老实实写了个手动下载更新包按钮,用户爱更不更——反正我用着没毛病。

泰州私家侦探 扬州侦探 湖州侦探公司 嘉兴私家侦探 温州侦探公司
如果您有什么问题,欢迎咨询技术员 点击QQ咨询