启用<EnableDefaultMauiItems>True后MAUI项目出现大量XAML错误求助
问题解答
关于EnableDefaultMauiItems的作用与是否需要它
EnableDefaultMauiItems的核心作用是控制是否自动包含MAUI默认的项目项(比如默认资源、XAML编译规则、启动屏/图标模板等),并非专门用于控制启动屏自动生成。- 你从Xamarin.Forms升级的项目必须保持
EnableDefaultMauiItems="False"才能正常构建,原因是升级过程中遗留的XF旧配置/文件,和MAUI默认自动引入的项产生了冲突(比如XAML编译规则重复),改设为True就会触发资源标识符重复定义的错误,这和是否构建WinUI项目无关。
解决启动屏与屏幕无法占满的问题
既然不能开启默认项自动引入,就手动配置启动屏并排查留白问题:
- 修正启动屏配置路径:MAUI资源路径用正斜杠分隔,移除多余空格,配置改为:
<MauiSplashScreen Include="Resources/Splash/splash.svg" Color="#512BD4" BaseSize="128,128" /> - 确保启动屏资源合规:检查
splash.svg本身没有多余空白区域,且存放路径正确。 - 排查屏幕留白根源:
- 检查
App.xaml的MainPage及所有页面是否有额外设置的Padding/Margin; - 在
MauiProgram.cs中确认窗口配置未限制尺寸:builder.ConfigureWindow(window => { window.Width = DeviceDisplay.MainDisplayInfo.Width; window.Height = DeviceDisplay.MainDisplayInfo.Height; }); - 重新添加iOS平台的
Info.plist,确保其中没有XF时代的旧窗口配置,让MAUI自动生成适配的启动屏关联设置。
- 检查
关于EnableDefaultMauiItems="True"的重复错误
这个错误是因为手动引入的XAML项和MAUI默认自动引入的项重复编译导致的,你的项目依赖False才能构建,所以不要修改这个值,通过手动补充启动屏这类必要配置即可,无需依赖默认项自动引入。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

