C# WPF多语言国际化实现异常:无法生成对应资源DLL文件
C# WPF多语言国际化资源DLL生成失败问题
我在为C# WPF应用实现多语言国际化支持时,按配置指南完成操作后,生成对应资源DLL文件时遇到错误。
已执行的操作步骤
- 引入WPFLocalizeExtension包以支持多语言功能。
- 编写
LanguageHelper类用于获取国际化字符串:
public static string GetLocalizedString(string key, string resourceFileName = "Languages", bool addSpaceAfter = false) { var localizedString = String.Empty; // 构建key的完整限定名称 var assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; var fullKey = assemblyName + ":" + resourceFileName + ":" + key; var locExtension = new LocExtension(fullKey); locExtension.ResolveLocalizedValue(out localizedString); // 若需要则在字符串末尾添加空格 if (addSpaceAfter) { localizedString += " "; } return localizedString; }
该方法参数说明:
key:指定要获取的本地化字符串的关键字或标识符resourceFileName:指定资源文件名称,默认值为"Languages"addSpaceAfter:布尔值,为true时在本地化字符串末尾添加空格
此方法用于根据给定key从指定资源文件(默认是"Languages")中获取对应的本地化字符串。
- 在XAML中配置多语言相关引用:
lex:LocalizeDictionary.DesignCulture="en-US" lex:ResxLocalizationProvider.DefaultAssembly="AppSample" lex:ResxLocalizationProvider.DefaultDictionary="Langs"
通过该配置让WPF应用在不同区域设置下加载对应的本地化资源。
- 实现语言切换功能:
public void ChangeLanguage(string languageCode) { WPFLocalizeExtension.Engine.LocalizeDictionary.Instance.Culture = new CultureInfo(languageCode); }
- 配置.resx资源文件:
- 存储路径:放在i18n文件夹下,而非默认的Resources文件夹
- 命名规则:统一使用
Languages.en_US.resx这类格式 - 所有文件的生成操作设置为嵌入资源
- 所有文件的访问修饰符设置为Public
- 执行项目构建
报错信息
构建项目时触发错误:
The file "obj\x64\All\en-US\DarkMode 2.resources.dll" cannot be copied because the file cannot be found.
开发环境信息
- Visual Studio版本:2022 17.6.2
- .NET版本:.NET Framework 4.8
已尝试的解决操作
- 删除项目的obj目录后重新构建
- 清理整个解决方案后重新构建
求助需求
目前仍未找到问题根源,希望了解是否有其他人遇到过类似问题,或者知道如何正确生成多语言资源DLL文件。
内容的提问来源于stack exchange,提问作者AbuLan
相关产品推荐
相关产品推荐

