MAUI+Prism开发遇CS0263错误:App部分类基类声明不一致求助
解决MAUI+Prism中CS0263: Partial declarations of 'App' must not specify different base classes错误
这个错误的核心是App作为分部类(partial),XAML文件与C#代码文件声明的基类不一致——XAML中继承自原生Application,而C#代码中继承自PrismApplication,C#不允许分部类存在不同的基类声明。以下是具体解决步骤:
1. 修改App.xaml的基类声明
将XAML中的<Application>替换为Prism的PrismApplication,同时引入Prism.Maui的命名空间:
<?xml version="1.0" encoding="UTF-8" ?> <prism:PrismApplication xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:prism="clr-namespace:Prism.Maui;assembly=Prism.Maui" x:Class="MauiApp1.App"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Resources/Styles/Colors.xaml" /> <ResourceDictionary Source="Resources/Styles/Styles.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </prism:PrismApplication>
2. 修正App.xaml.cs的命名空间引用
移除不必要的别名,直接引用Prism.Maui命名空间,确保基类指向正确:
using MauiApp1.Services.Core; using Prism.Ioc; using Prism.Maui; namespace MauiApp1 { public partial class App : PrismApplication { protected override async void OnInitialized() { InitializeComponent(); await NavigationService.NavigateAsync("NavigationPage/MainPage"); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { //containerRegistry.RegisterSingleton<IAppInfo, AppInfoImplementation>(); containerRegistry.RegisterForNavigation<NavigationPage>(); containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>(); } } }
3. 调整CreateMauiApp初始化逻辑
使用Prism提供的UsePrismApp<App>扩展方法替代原生UseMauiApp<App>,确保Prism容器和导航系统正确初始化:
using Prism.Maui; namespace MauiApp1 { public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UsePrismApp<App>(prism => { // 可在此补充额外类型注册,或留空(App类的RegisterTypes已处理) }) .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }); return builder.Build(); } } }
额外注意事项
- 确保已安装与当前MAUI版本兼容的
Prism.MauiNuGet包 - 确认App.xaml的
x:Class属性与App.xaml.cs的命名空间、类名完全一致 - 不要删除
OnInitialized方法中的InitializeComponent();调用,否则XAML资源无法加载
内容的提问来源于stack exchange,提问作者Official Essama
相关产品推荐
相关产品推荐

