WPF应用app.xaml.cs代码未执行,依赖注入配置遇阻
解决WPF中App.xaml.cs代码未执行的问题
你的App.xaml.cs代码完全没触发,核心原因大概率是WPF没有正确关联到这个类,或者启动配置有误,按以下步骤排查:
检查App.xaml的x:Class属性匹配
打开App.xaml文件,确认根元素Application的x:Class属性值和app.xaml.cs中的命名空间+类名完全一致,也就是GTS.CMMS.Client.App。如果这里写错,WPF根本不会把XAML和你的代码后置文件绑定,自然不会执行任何代码。正确的App.xaml结构参考:<Application x:Class="GTS.CMMS.Client.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Application.Resources> </Application.Resources> </Application>确认项目启动对象设置
右键项目 → 属性 → 应用程序选项卡 → 启动对象,选择GTS.CMMS.Client.App作为启动对象。如果这里设成了其他类或者"未设置",WPF会跳过你的App类,直接用默认逻辑启动。修复文件关联与生成操作
在解决方案资源管理器里,确保App.xaml.cs是App.xaml的嵌套子项。如果没有嵌套:- 右键App.xaml → 属性,把"生成操作"改成
ApplicationDefinition - 右键App.xaml.cs → 属性,把"生成操作"改成
Compile
- 右键App.xaml → 属性,把"生成操作"改成
排查重复类定义
检查项目里有没有其他同名的App类(比如其他命名空间下),类名冲突会导致WPF加载错误的类,你的代码自然不会运行。
另外补充两个小细节:
- 你的
OnStartup和OnExit用了async void,虽然不是当前问题的原因,但这种写法不推荐,后续可以改成异步安全的实现 - 在
OnStartup里记得调用base.OnStartup(e),避免遗漏WPF的默认启动逻辑,同时初始化完DI后要手动创建并显示主窗口
内容的提问来源于stack exchange,提问作者Álvaro García
相关产品推荐
相关产品推荐

