You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加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深层缓存,导致异常残留。

修复步骤:

  1. 关闭Visual Studio
  2. 删除MAUI和测试项目的bin、obj文件夹
  3. 删除%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_*\ComponentModelCache(替换17.0_*为你的VS版本文件夹)
  4. 重新打开VS,右键解决方案选择清理解决方案,再执行重建解决方案

启动配置检查

若测试项目被设为启动项目,会干扰MAUI应用的正常启动流程。

修复步骤:

  • 右键MAUI项目,选择设置为启动项目
  • 在Debug工具栏中,确认选择的是正确的平台(如Windows Machine、Android模拟器/设备),而非测试项目的启动配置

内容的提问来源于stack exchange,提问作者Anass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:33:26