在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
相关产品推荐
相关产品推荐

