.NET6下生成*.resx或转换*.resources至*.resx的企业级方案咨询
.NET6下生成/转换.resx文件的企业级方案
方案1:引入官方兼容ResX API包(跨平台)
.NET6中虽移除了ResXResourceWriter的内置支持,但可通过引用System.Windows.Extensions NuGet包重新获得该类的跨平台实现。此包由微软官方维护,支持Windows、Linux、macOS,可直接沿用原有ResXResourceWriter的代码逻辑生成.resx文件,无需大幅修改业务代码。
示例代码:
using System.Resources; // 初始化ResX资源写入器 using var writer = new ResXResourceWriter("Localization.resx"); // 添加资源键值对 writer.AddResource("Greeting", "Hello World"); writer.AddResource("ErrorMessage", "Operation failed"); // 生成最终.resx文件 writer.Generate();
方案2:自定义跨平台转换工具(.resources → .resx)
若已有生成的二进制.resources文件,可编写轻量级控制台工具,结合ResourceReader和ResXResourceWriter(依赖上述NuGet包)实现跨平台格式转换。该方式可控性强,可直接集成到CI/CD流水线中,满足自动化需求。
核心转换代码示例:
using System.Resources; // 读取二进制.resources文件 using var reader = new ResourceReader("Localization.resources"); // 初始化.resx写入器 using var writer = new ResXResourceWriter("Localization.resx"); // 遍历资源项并写入.resx foreach (DictionaryEntry entry in reader) { writer.AddResource(entry.Key.ToString(), entry.Value); } writer.Generate();
方案3:MSBuild自动化转换
在项目的.csproj文件中添加自定义MSBuild目标,将转换逻辑嵌入构建流程,确保每次构建后自动完成.resources到.resx的格式转换,避免手动操作遗漏。
示例MSBuild配置:
<Target Name="ConvertResourcesToResX" AfterTargets="Build"> <Exec Command="dotnet run --project $(SolutionDir)ResourceConverter/ResourceConverter.csproj -- $(OutputPath)Localization.resources $(OutputPath)Localization.resx" /> </Target>
方案4:利用.NET SDK内置资源处理能力
.NET6+ SDK提供了跨平台的资源处理API,可直接通过dotnet命令行或SDK类库实现.resx的生成与转换。例如,借助System.Resources.Extensions包中的API,可灵活定制资源文件的读写逻辑,完全替代传统resgen.exe的功能。
内容的提问来源于stack exchange,提问作者Vladislav Bratitsa
相关产品推荐
相关产品推荐

