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

C# 在没有资源的情况下写入RESX文件,c#,.net,resx,C#,.net,Resx,我正在使用ResXResourceWriter和ResXResourceReader来处理.resx文件中的资源。为了“删除”一个资源,我从读卡器中加载了所有的条目,只是不把那个条目添加到写卡器中 每当我试图从文件中删除所有资源时,我注意到一个问题:编写器抛出一个NullReferenceException。示例简化代码 var writer = new ResXResourceWriter(filename); writer.Close(); 读取forResXResourceWriter内

我正在使用
ResXResourceWriter
ResXResourceReader
来处理
.resx
文件中的资源。为了“删除”一个资源,我从读卡器中加载了所有的条目,只是不把那个条目添加到写卡器中

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

var writer = new ResXResourceWriter(filename);
writer.Close();
读取for
ResXResourceWriter
内部写入程序直到通过
AddResource
添加资源后才会启动。这似乎意味着您不能拥有一个没有资源的
.resx
文件

这是故意的吗?我应该尝试拥有一个“空”的资源文件吗


或者是否有其他方法来创建一个“空的”
.resx

我从@导出了我的解决方案

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

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

旁注:您打算如何使用空资源文件?它只是一个临时文件,包含所有元数据和用法,但没有任何
数据
元素。请参见-您实际上不打算使用它来加载资源。。。在这种情况下,我只需编写静态文件(我怀疑空资源文件在运行时也会有问题,因此没有人为这种情况添加处理,但这只是我的猜测)。您可以使用AddMetaData(因为它也调用InitWriter),或者如果您甚至不想添加元数据,请使用反射来破解并自己调用InitWriter。我试过了,它成功了,最后我得到了一个空的resx文件。