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

.NET MAUI iOS真机部署无法加载resx资源dll问题求助

.NET MAUI iOS实体设备本地化资源加载失败问题

问题描述

按步骤实现.NET MAUI本地化功能后,iOS模拟器运行正常,但部署到实体iPhone后切换语言功能失效,报错无法找到对应语言的TestApp.resources.dll:

Language is Traditional Chinese
2023-07-12 01:10:01.410 Xamarin.PreBuilt.iOS[645:115119] Could not resolve assembly TestApp.resources, Version=1.0.0.0, Culture=zh-TW, PublicKeyToken=null. Details: Could not load file or assembly '/var/mobile/Containers/Data/Application/1F073A32-D7F4-4009-81C6-D12526416BC2/Documents/TestApp.content/TestApp.resources.dll' or one of its dependencies.
...(其余重复报错省略)
Language is English
2023-07-12 01:10:02.041 Xamarin.PreBuilt.iOS[645:115119] Could not resolve assembly TestApp.resources, Version=1.0.0.0, Culture=en-US, PublicKeyToken=null. Details: Could not load file or assembly '/var/mobile/Containers/Data/Application/1F073A32-D7F4-4009-81C6-D12526416BC2/Documents/TestApp.content/TestApp.resources.dll' or one of its dependencies.
...(其余重复报错省略)

实体设备的应用文件夹中未发现.resources.dll文件,资源dll未被正确部署到对应语言子目录。

解决方案

1. 检查资源文件的生成配置

  • 右键项目中的.resx文件,打开属性面板
  • 将生成操作设置为EmbeddedResource,自定义工具设置为ResXFileCodeGenerator
  • 确保所有语言对应的.resx文件(如Resources.zh-TW.resx、Resources.en-US.resx)都按此配置设置

2. 调整iOS项目的部署与链接器配置

在项目的.csproj文件中添加以下配置,强制保留资源dll:

<PropertyGroup Condition="'$(TargetFramework)' == 'net7.0-ios'">
  <MtouchLink>None</MtouchLink>
</PropertyGroup>

注:MtouchLink设为None是临时排查方案,后续可根据需求调整为SdkOnly,避免包体积过大,但需确认资源dll未被链接器误删。

3. 验证资源命名与目录结构

  • 确保资源命名符合规范:基础资源为Resources.resx,本地化资源命名格式为Resources.{CultureCode}.resx(如Resources.zh-TW.resx)
  • 编译后检查输出目录bin/Release/net7.0-ios/ios-arm64/,确认存在对应语言的子目录(如zh-TW、en-US),且目录中包含TestApp.resources.dll

4. 清理重建项目

  • 执行生成 -> 清理解决方案
  • 删除项目根目录下的bin和obj文件夹
  • 重新生成解决方案并部署到实体设备

补充说明

iOS实体设备的资源部署逻辑与模拟器存在差异,链接器可能会移除未被直接引用的资源dll,通过上述配置可强制保留这些文件,确保本地化功能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:53:34