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

.NET Maui Android项目引用NuGet包后本地化功能失效

.NET Maui Android 无法加载NuGet包中的本地化资源

我有两个项目:

  • 类库项目(Home.BudgetPlanner.Data):在Localization文件夹下包含多份资源文件,比如TransactionType.resx(默认英文)和TransactionType.nl-BE.resx(荷兰语),两份文件都包含Expense和Income字符串。该项目已打包为NuGet包。
  • .NET Maui项目(Home.BudgetPlanner.Mobile):支持Android和Windows平台,已安装上述类库的NuGet包。

问题现象

在.NET Maui项目中设置区域性为nl-BE后,获取Home.BudgetPlanner.Data.Localization.TransactionType.Expense时,得到的却是默认英文字符串,而非预期的荷兰语值:

var cultureInfo = new CultureInfo("nl-BE");

Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

var x = Home.BudgetPlanner.Data.Localization.TransactionType.Expense; // 期望荷兰语值,但实际得到英文
  • 仅Android平台出现问题,Windows平台完全正常。
  • 仅通过NuGet包安装类库时会触发问题,手动添加类库的项目引用(直接引用DLL)则本地化功能正常。
  • 若在Maui项目自身添加资源文件,本地化也能正常工作,因此判断这是Android与NuGet包本地化结合的特有问题。

环境信息

使用Microsoft Visual Studio Professional 2022(64位)17.6.2版本,已在物理Android设备上测试,结果一致。

已尝试的解决步骤

  1. 在类库的.csproj文件中添加配置:
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
  1. 在Android项目的MainActivity类中添加ConfigChanges.Locale:
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, AllowEmbedded = true, ConfigurationChanges = ConfigChanges.Locale | ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
  1. 额外尝试:将设备系统语言改为荷兰语,添加nl.resx资源文件,但均无效果,仍返回英文。

是否有其他人遇到过相同问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:30