打开Resource.resx文件,而不是创建它,因为它会覆盖以前的Resource.resx文件
本文关键字:文件 resx Resource 覆盖 打开 创建 因为 | 更新日期: 2023-09-27 17:59:00
我从Visual Studio 2010中启动我的应用程序。然后,我将一些文件添加到我的应用程序中,每个文件类型的图标(如doc、docx、xls、pdf等)都作为字符串/位图键/值对通过添加到IconImages.Resx文件中
private void DumpTempResourceToRealResourceFile(IDictionary<String, Bitmap> tempResource)
{
using (ResXResourceWriter writer = new ResXResourceWriter("IconImages.Resx"))
{
foreach (KeyValuePair<String,Bitmap> item in tempResource)
{
writer.AddResource(item.Key, item.Value);
}
writer.Generate();
}
}
当图标被添加到资源中时,我会关闭应用程序。
然后我用VS2010重新启动我的应用程序,并在我的文档应用程序中添加一些文件。文件类型将再次写入我的IconImages.Resx。然后我关闭我的应用程序,检查''bin''文件夹下的IconImages.Resx文件,以前保存的图像不见了,我现在有了新的/不同的图像。
为什么我不能说打开一个.resx文件并附加一些内容?每次我创建一个名为"IconImages.Resx"的ResourceWriter对象时,我都会覆盖之前添加的内容,这太愚蠢了。
我的IconImages.Resx文件如何在应用程序会话中保持活跃而不被我添加的其他内容覆盖?
我没有使用ResXResourceWriter,但通常*Writer类只是从头开始编写数据文件。
如果你想"附加"新数据,你通常必须使用*Reader类将现有数据取消序列化到内存中,然后合并/添加你想要的任何新数据,然后使用*Writer对象将结果数据写回。看看ResXResourceReader
,看看它是否支持您需要做的事情。
我现在有一个查找表"FiletypeImage",其中包含文件类型".docx"和原始二进制数据(又名blob)。该表在我的documentService中检索并缓存在一个静态变量中。使用由我的DocumentListViewModel调用的Get和Add方法。它的thx到sqlite非常快:)