新建.NET MAUI安卓应用按钮点击计数显示异常问题咨询
问题成因
VS 2022 17.3.0 Preview 2.0是.NET MAUI的早期预览版本,两个已知bug会导致该异常:
- 该版本针对Android 9.0(API 28)编译时,默认开启的激进代码裁剪会误删int转字符串的相关IL逻辑,模板默认的
$"Clicked {count} times"插值写法无法正确渲染count变量,最终只输出固定的"Clicked"前缀文本。Windows平台的WinUI 3运行时没有触发该裁剪规则,所以表现正常。 - 该版本Android端的事件回调存在线程调度缺陷,部分场景下UI属性赋值没有被调度到UI线程执行,即使变量值更新,界面也不会渲染拼接后的完整文本。
解决方案
按顺序操作即可:
- 代码快速修复:打开
MainPage.xaml.cs找到OnCounterClicked点击事件,把默认的插值字符串赋值改成显式拼接+强制类型转字符串,避开裁剪bug,参考代码:
private int count = 0; private void OnCounterClicked(object sender, EventArgs e) { count++; CounterBtn.Text = "Clicked " + count.ToString() + " times"; SemanticScreenReader.Announce(CounterBtn.Text); }
- 调整链接器配置:右键Android项目节点,选择「属性」→「生成」→「Android生成」,把链接器行为从默认的
Sdk and User Assemblies改成Sdk Assemblies Only,关闭对用户代码的激进裁剪。 - 清理缓存重部署:修改完配置和代码后,先在Pixel 2模拟器里卸载已经安装的旧版测试应用,再执行VS菜单栏的「生成」→「清理解决方案」,之后重新生成部署即可。
- 长期方案:这类预览版专属bug在17.3正式版及后续更新中已经全部修复,升级到稳定通道的VS版本后,直接用默认模板代码就能正常运行,不需要额外改配置或代码。
内容的提问来源于stack exchange,提问作者T. A. Pfaff
相关产品推荐
相关产品推荐

