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();
读取forResXResourceWriter
内部写入程序直到通过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文件。