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

.NET MAUI发布版调用Toast.Show()抛出System.InvalidCastException异常

.NET MAUI Release模式下调用Toast.Show()抛出System.InvalidCastException异常

在Release配置下编译.NET MAUI应用后,调用Toast.Show()时会抛出如下System.InvalidCastException异常,Debug配置下无此问题:

System.InvalidCastException: Arg_InvalidCastException
   at System.Collections.Frozen.SmallFrozenSet`1.GSW[[UIKit.UIView, Microsoft.iOS, Version=17.2.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065]].Store(FrozenSet`1 )
   at System.Collections.Frozen.FrozenSetInternalBase`2[[UIKit.UIView, Microsoft.iOS, Version=17.2.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065],[System.Collections.Frozen.SmallFrozenSet`1.GSW[[UIKit.UIView, Microsoft.iOS, Version=17.2.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065]], System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]..ctor(IEqualityComparer`1 )
   at System.Collections.Frozen.SmallFrozenSet`1[[UIKit.UIView, Microsoft.iOS, Version=17.2.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065]]..ctor(HashSet`1 )
   at System.Collections.Frozen.FrozenSet.CreateFromSet[UIView](HashSet`1 )
   at System.Collections.Frozen.FrozenSet.ToFrozenSet[UIView](IEnumerable`1 , IEqualityComparer`1 )
   at CommunityToolkit.Maui.Core.Views.AlertView.get_Children()
   at CommunityToolkit.Maui.Core.Views.AlertView.Initialize()
   at CommunityToolkit.Maui.Core.Views.Alert.Show()
   at CommunityToolkit.Maui.Alerts.Toast.ShowPlatform(CancellationToken token)
   at CommunityToolkit.Maui.Alerts.Toast.Show(CancellationToken token)
   at KinesiaOne.ViewModels.SettingsPageViewModel.VersionTapped()

复现步骤

  • 克隆包含复现代码的仓库
  • 设置拥有分发证书的Bundle ID
  • 以Release模式构建并部署到设备
  • 点击“Click me”按钮,即可触发异常,Toast无法显示

解决方案

方案1:添加AOT编译排除规则

在iOS项目的.csproj文件中,针对Release配置添加AOT排除参数,避免System.Collections.Frozen相关类型被错误优化:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <MtouchExtraArgs>--aot-exclude=System.Collections.Frozen.SmallFrozenSet`1.GSW</MtouchExtraArgs>
</PropertyGroup>

方案2:更新CommunityToolkit.Maui版本

该异常属于组件已知问题,更新CommunityToolkit.Maui到最新稳定版本,大概率已修复此AOT编译导致的类型转换问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:27:46