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

.NET 8中含点号文件夹下ResourceFile无法正常工作

.NET 8中含点号文件夹的ResourceFile加载问题解决方案

核心原因

.NET 8对资源文件的解析逻辑做了调整,带点号的文件夹会被误识别为程序集命名空间的一部分,而非目录结构,导致资源无法正确定位。

无需重命名的解决方法

1. 手动指定资源完整嵌入路径

加载ResourceFile时,不依赖自动解析的命名空间,直接传入资源的完整嵌入路径:

// 示例代码
var resourceStream = Assembly.GetExecutingAssembly()
    .GetManifestResourceStream("YourAssemblyName.R4.3.ResourceFileName.resx");

替换YourAssemblyName为你的程序集名称,ResourceFileName.resx为实际资源文件名。

2. 修改项目文件的资源嵌入规则

在项目文件(.csproj)中添加配置,明确指定资源的嵌入路径,避免点号被解析为命名空间分隔符:

<ItemGroup>
  <EmbeddedResource Include="R4.3\**\*.resx">
    <LogicalName>%(RecursiveDir)%(FileName)%(Extension)</LogicalName>
  </EmbeddedResource>
</ItemGroup>

该配置会保留原始目录结构作为资源的逻辑名称,让.NET 8正确识别带点号的文件夹。

3. 手动指定ResourceManager的基名称

利用ResourceManager的重载构造函数,手动指定资源基名称和程序集,绕开自动解析逻辑:

var resourceManager = new ResourceManager("YourAssemblyName.R4.3.ResourceFileName", 
    Assembly.GetExecutingAssembly());
string value = resourceManager.GetString("ResourceKey");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:20:54