MAUI项目发布为EXE后Material Design图标字体无法显示求助
MAUI发布EXE后Material Design图标字体不显示的解决方案
以下是针对该问题的分步排查和解决方法:
1. 检查字体文件的项目属性
右键项目中的Material Design字体文件(如MaterialIcons-Regular.ttf),选择属性,确保:
- 生成操作设置为
Embedded resource - 复制到输出目录设置为
始终复制或如果较新则复制
2. 确认App.xaml中的字体注册正确
在App.xaml的资源字典中注册字体,注意Windows平台的格式要求:
<Application.Resources> <ResourceDictionary> <OnPlatform x:Key="MaterialIcons" x:TypeArguments="x:String"> <On Platform="Windows" Value="MaterialIcons-Regular.ttf#Material Icons" /> <On Platform="Android" Value="MaterialIcons-Regular.ttf" /> <!-- 其他平台可按需添加 --> </OnPlatform> </ResourceDictionary> </Application.Resources>
注:
Material Icons是字体的家族名,可右键字体文件→属性→详细信息→字体家族查看准确名称。
3. 验证XAML中图标引用路径
使用FontImageSource引用图标时,确保FontFamily绑定的是注册的资源键:
<Image> <Image.Source> <FontImageSource FontFamily="{StaticResource MaterialIcons}" Glyph="" Color="Black" /> </Image.Source> </Image>
同时确认Glyph的Unicode编码正确,可从Material Design官网获取对应图标的编码。
4. 确保发布时字体文件被正确包含
打开项目的.csproj文件,添加以下配置(如果未自动生成),确保字体文件被复制到发布目录:
<ItemGroup> <None Include="Resources\Fonts\MaterialIcons-Regular.ttf" CopyToOutputDirectory="PreserveNewest" /> <EmbeddedResource Include="Resources\Fonts\MaterialIcons-Regular.ttf" /> </ItemGroup>
如果使用MSIX打包,检查打包项目的Package.appxmanifest,确认资源包含规则覆盖字体文件。
5. 调试Windows平台字体加载情况
在Windows平台代码中添加调试逻辑,验证字体是否成功加载:
#if WINDOWS using Windows.UI.Xaml.Media; // 在页面构造函数或OnAppearing方法中添加 foreach (var fontFamily in FontFamily.Families) { System.Diagnostics.Debug.WriteLine($"已加载字体:{fontFamily.Source}"); } #endif
运行发布后的程序,查看调试输出,确认MaterialIcons-Regular.ttf#Material Icons是否在加载列表中。
6. 检查发布目录的文件完整性
直接发布EXE后,打开发布输出文件夹,确认Resources\Fonts目录下存在对应的字体文件。如果缺失,检查项目属性中的复制设置是否生效。
内容的提问来源于stack exchange,提问作者Cherry Tun
相关产品推荐
相关产品推荐

