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

