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

在VS Code中实现ASP.NET Core本地化遇「未找到资源」问题求助

解决ASP.NET Core本地化「No resources found = true」问题

针对你遇到的资源找不到问题,从以下几个关键方向排查:

1. 修正资源文件命名规则

使用IStringLocalizer<WeatherForecastController>时,资源文件命名必须和控制器的命名空间+类名严格对应:

  • 假设你的WeatherForecastController在YourProjectName.Controllers命名空间下,Resources文件夹里的文件应命名为:
    • Controllers.WeatherForecastController.en-US.resx(英文)
    • Controllers.WeatherForecastController.fr-FR.resx(法语)
  • 如果控制器在项目根命名空间下(无额外命名空间),则命名为YourProjectName.WeatherForecastController.en-US.resx

你当前用的x.en-US.resx命名完全不符合规则,这是核心问题。

2. 检查资源文件的生成操作

确保resx文件的生成操作设置为Embedded resource:

  • 在VS Code中,打开项目的.csproj文件,添加或确认以下配置(替换实际文件名):
    <ItemGroup>
      <EmbeddedResource Include="Resources\Controllers.WeatherForecastController.en-US.resx" />
      <EmbeddedResource Include="Resources\Controllers.WeatherForecastController.fr-FR.resx" />
    </ItemGroup>
    
  • 若使用ResX Editor扩展创建文件,需手动确认此配置,否则资源不会被嵌入程序集。

3. 验证Resources路径与文件夹结构

确认Resources文件夹位于项目根目录下,且AddLocalization中的路径配置正确:

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

如果文件夹是嵌套结构(比如wwwroot/Resources),需同步修改路径参数。

4. 核对键名拼写与大小写

确保resx文件中的键名(比如你用的Key)和代码中_localizer["Key"]的拼写、大小写完全一致,本地化键是大小写敏感的。

5. 测试时指定正确的请求文化

调用接口时,通过以下方式指定支持的文化:

  • 在请求头中添加Accept-Language: en-US或Accept-Language: fr-FR
  • 或使用查询参数:?culture=en-US&ui-culture=en-US
    避免因默认文化未匹配导致资源加载失败。

6. 确认依赖包完整性

如果是ASP.NET Core MVC项目,除了Microsoft.Extensions.Localization,还需确保安装了Microsoft.AspNetCore.Mvc.Localization包,执行以下命令安装:

dotnet add package Microsoft.AspNetCore.Mvc.Localization

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:14:54