添加xUnit测试项目后.NET MAUI应用Windows不显示且安卓热加载卡住
.NET MAUI 加xUnit测试后Windows/Android Debug异常的解决方案
目标框架与OutputType配置冲突
MAUI项目默认面向平台特定框架(如net7.0-windows10.0.19041.0),添加通用net7.0框架后,若OutputType条件判断不严谨,会导致构建输出类型混乱,影响窗口启动和程序集加载。
修复步骤:
- 编辑MAUI项目的csproj文件,确保OutputType仅在通用框架下为Exe,平台框架下保留WinExe:
<OutputType Condition="'$(TargetFramework)' == 'net7.0'">Exe</OutputType> <OutputType Condition="'$(TargetFramework)' != 'net7.0'">WinExe</OutputType> - 若测试不需要通用
net7.0框架,可临时注释该目标框架,仅保留平台特定框架,减少配置冲突。
测试项目的MAUI配置引发依赖冲突
测试项目中添加<UseMaui>true</UseMaui>后,会共享MAUI的构建上下文,导致主应用的依赖加载被干扰。
修复步骤:
- 在测试项目的csproj中,将MAUI项目的引用设置为私有资产,避免测试依赖渗透到主应用:
<ItemGroup> <ProjectReference Include="..\YourMauiApp\YourMauiApp.csproj" PrivateAssets="all" /> </ItemGroup> - 将测试项目的目标框架改为与MAUI平台匹配的版本(如
net7.0-windows或net7.0-android),替代通用net7.0,降低跨框架的依赖冲突概率。
Android端程序集加载错误处理
Android端出现[monodroid-assembly] open_from_bundles: failed to load assembly,是因为测试相关程序集被错误打包到Android应用中,或存在版本不兼容。
修复步骤:
- 在MAUI项目的csproj中添加Android打包排除规则,过滤测试相关程序集:
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0-android'"> <TrimmerRootAssembly Remove="xunit*" /> <AndroidAssembliesToExclude Include="xunit*" /> </ItemGroup> - 检查所有NuGet包版本,确保xUnit(2.4.2)、MAUI相关包均与.NET 7.0兼容,无版本 mismatch。
彻底清理构建缓存
常规清理bin/obj可能无法清除VS深层缓存,导致异常残留。
修复步骤:
- 关闭Visual Studio
- 删除MAUI和测试项目的
bin、obj文件夹 - 删除
%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_*\ComponentModelCache(替换17.0_*为你的VS版本文件夹) - 重新打开VS,右键解决方案选择清理解决方案,再执行重建解决方案
启动配置检查
若测试项目被设为启动项目,会干扰MAUI应用的正常启动流程。
修复步骤:
- 右键MAUI项目,选择设置为启动项目
- 在Debug工具栏中,确认选择的是正确的平台(如Windows Machine、Android模拟器/设备),而非测试项目的启动配置
内容的提问来源于stack exchange,提问作者Anass
相关产品推荐
相关产品推荐

