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

.NET MAUI部署至iOS模拟器报错:simctl返回退出码22

解决.NET MAUI iOS模拟器部署报错(simctl退出码22/CFBundleVersion无效)

核心问题定位

报错指向Info.plist的CFBundleVersion无效,但实际输出文件中已设置Bundle Version = 1、Bundle version string (short) = 2.0,且全新MAUI项目、同配置Xamarin项目可正常部署,说明问题出在当前项目的构建配置或文件引用异常。

下一步排查步骤

  • 检查项目csproj中的版本配置
    打开项目的.csproj文件,确认以下节点是否正确设置,且未被条件性覆盖:

    <PropertyGroup>
      <Version>2.0</Version> <!-- 对应Bundle version string (short) -->
      <Build>1</Build> <!-- 对应Bundle Version -->
      <ApplicationVersion>1</ApplicationVersion> <!-- MAUI专属,需与Build值一致 -->
    </PropertyGroup>
    

    注意:若存在针对iOS的条件组(如PropertyGroup Condition="$(TargetFramework) == 'net6.0-ios'"),需确保其中的版本配置未冲突。

  • 清理并重建项目的iOS输出目录
    手动删除Mac构建服务器上的项目输出缓存文件夹(通常位于~/Library/Caches/Xamarin/mtbs/builds/[项目名]),同时在Visual Studio中执行清理解决方案→重建解决方案,避免旧的Info.plist缓存干扰。

  • 检查Info.plist模板文件
    确认项目中iOS平台的Info.plist模板(而非输出目录中的生成文件)是否存在语法错误或异常引用:

    • 打开Platforms/iOS/Info.plist,检查CFBundleVersion和CFBundleShortVersionString是否使用了正确的MSBuild变量,而非硬编码冲突值:
      <key>CFBundleVersion</key>
      <string>$(Build)</string>
      <key>CFBundleShortVersionString</key>
      <string>$(Version)</string>
      
    • 若模板中直接写死了版本号,需确保与csproj中的配置完全一致。
  • 排查MAUI特定的配置冲突
    对比全新MAUI项目的csproj和Info.plist,检查当前项目是否额外添加了可能影响版本的配置:

    • 是否启用了UseIntermediateDesignerFile或其他自定义构建任务?
    • 是否在Platforms/iOS/Entitlements.plist中存在与版本相关的异常配置?
  • 验证构建过程中的变量替换
    在Mac上手动触发构建,查看构建日志中是否有CFBundleVersion的替换异常:
    执行命令:

    dotnet build -f net6.0-ios -c Debug
    

    搜索日志中Processing Info.plist相关条目,确认最终生成的CFBundleVersion值是否为预期的1。

补充说明

由于同配置的Xamarin项目可正常运行,重点排查MAUI项目特有的构建逻辑差异,比如ApplicationVersion变量的使用、MSBuild任务的执行顺序等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:35:25