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

C# Windows Forms项目本地化时无法访问.resx资源文件

WinForm 多语言资源访问异常解决方案

你对多语言资源文件的访问方式有误,.NET 多语言资源机制不会为带语言后缀的 .resx 文件生成独立的可直接访问的强类型类,你预期的 Properties.ResourceString.de-DE.btnSwitchLanguage 写法本身不符合设计规范。

以下是需要修正的配置和操作步骤:

  • 首先补全中性基础资源文件:你需要先在 Properties 文件夹下创建一个无语言后缀的基础资源文件 ResourceString.resx,内部定义和 ResourceString.de-DE.resx 完全一致的字符串键(如 btnSwitchLanguage),访问资源时统一通过这个基础文件生成的 Properties.ResourceString 类调用即可。
  • 检查资源文件属性配置:右键所有 .resx 文件选择「属性」,确认以下配置:
    • 生成操作设置为 嵌入的资源
    • 自定义工具设置为 PublicResXFileCodeGenerator(对应你设置的 Public 访问权限)
    • 基础 ResourceString.resx 的「自定义工具命名空间」设置为 Properties
  • 正确的多语言切换代码写法如下:
using System.Globalization;
using System.Threading;

private void setLanguage()
{
    // 先设置当前线程的文化配置为德语,资源管理器会自动匹配对应语言的资源文件
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
    Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
    
    // 直接调用基础资源类的对应键即可,不需要加语言后缀
    btnSwitchLanguage.Text = Properties.ResourceString.btnSwitchLanguage;
}

如果修改后IDE依然没有资源访问提示,右键基础的 ResourceString.resx 选择「运行自定义工具」,强制重新生成强类型资源类即可。

如果是 .NET Core / .NET 5 及以上版本的 WinForm 项目,还需要在项目文件(.csproj)的 <PropertyGroup> 节点中添加中性语言配置,避免资源回退异常:

<NeutralLanguage>zh-CN</NeutralLanguage>
<!-- 此处替换为你项目的默认中性语言 -->

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:39:00