我正在使用ResXResourceWriter
和ResXResourceReader
来处理.resx
文件中的资源。为了“删除”一个资源,我从阅读器加载了所有项目,只是不要将它添加到编写器。
每当我尝试从文件中删除所有资源时,我都注意到了一个问题:作者抛出NullReferenceException
。示例简化代码。
var writer = new ResXResourceWriter(filename);
writer.Close();
在通过ResXResourceWriter
添加资源之前,不会启动AddResource
.resx
内部编写器。这似乎暗示您不能拥有没有资源的.resx
文件。
这是故意的,我应该尝试使用“空”资源文件吗?
或者是否有其他方法可以创建“空”{{1}}?
答案 0 :(得分:0)
我从@ Oguz Oguz派生了我的解决方案。
每当没有资源时,我就会添加一个占位符元数据元素来强制ResourceWriter创建必要的生成器结构。下次我生成.resx
如果有任何资源我就不添加该元数据项。
var writer = new ResXResourceWriter(filename);
m_resources.ForEach(writer.AddResource);
if (! m_resource.Any()) writer.AddMetadata("", "");
writer.Close();