在没有资源的情况下写入RESX文件

本文关键字:RESX 文件 情况下 资源 | 更新日期: 2023-09-27 18:20:19

我使用ResXResourceWriterResXResourceReader来处理.resx文件中的资源。为了"删除"一个资源,我从读取器中加载所有项目,只是不将该项目添加到编写器中。

每当我试图从文件中删除所有资源时,我都注意到一个问题:编写器抛出一个NullReferenceException。简化代码示例。

var writer = new ResXResourceWriter(filename);
writer.Close();

在通过AddResource添加资源之前,不会启动内部写入程序读取ResXResourceWriter的源。这似乎意味着您不能拥有没有资源的.resx文件。

这是故意的吗?我应该尝试一个"空"的资源文件吗?

或者有其他方法可以创建一个"空".resx吗?

在没有资源的情况下写入RESX文件

我从@Oguz-Oguz导出了我的解决方案。

每当没有资源时,我都会添加一个占位符元数据元素,以强制ResourceWriter创建必要的生成器结构。下次我生成.resx时,如果有任何资源,我只是不添加该元数据项。

var writer = new ResXResourceWriter(filename);
m_resources.ForEach(writer.AddResource);
if (! m_resource.Any()) writer.AddMetadata("", "");
writer.Close();