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

C# WPF多语言国际化实现异常:无法生成对应资源DLL文件

C# WPF多语言国际化资源DLL生成失败问题

我在为C# WPF应用实现多语言国际化支持时,按配置指南完成操作后,生成对应资源DLL文件时遇到错误。

已执行的操作步骤

  1. 引入WPFLocalizeExtension包以支持多语言功能。
  2. 编写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")中获取对应的本地化字符串。

  1. 在XAML中配置多语言相关引用:
lex:LocalizeDictionary.DesignCulture="en-US" 
lex:ResxLocalizationProvider.DefaultAssembly="AppSample" 
lex:ResxLocalizationProvider.DefaultDictionary="Langs"  

通过该配置让WPF应用在不同区域设置下加载对应的本地化资源。

  1. 实现语言切换功能:
public void ChangeLanguage(string languageCode)
{
    WPFLocalizeExtension.Engine.LocalizeDictionary.Instance.Culture = new CultureInfo(languageCode);
}
  1. 配置.resx资源文件:
  • 存储路径:放在i18n文件夹下,而非默认的Resources文件夹
  • 命名规则:统一使用Languages.en_US.resx这类格式
  • 所有文件的生成操作设置为嵌入资源
  • 所有文件的访问修饰符设置为Public
  1. 执行项目构建

报错信息

构建项目时触发错误:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:43