打开Resource.resx文件而不是创建它来覆盖以前的Resource.resx文件

时间:2011-06-11 20:22:56

标签: c# resources resx

我从with Visual Studio 2010启动我的应用程序。 我将一些文件添加到我的应用程序中,每个文件类型的图标(如doc,docx,xl​​s,pdf等图标)都作为String / Bitmap键/值对添加到我的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();
            }            
        }

当图标添加到资源时,我关闭了应用程序。

然后我再次使用VS 2010启动我的应用程序,并在我的文档应用程序中添加一些文件。文件类型再次写入我的IconImages.Resx。 然后我关闭我的应用程序并检查\ bin \文件夹下的IconImages.Resx文件,之前保存的图像消失了,我现在有新的/不同的。

为什么我不能说打开.resx文件并附加内容?每次我创建一个名为“IconImages.Resx”的ResourceWriter对象时,我都会覆盖之前添加的内容,这就是愚蠢的。

我的IconImages.Resx文件如何在应用程序会话中保持活动状态而不会被我添加的其他内容覆盖?

2 个答案:

答案 0 :(得分:1)

我没有使用过ResXResourceWriter,但通常* Writer类只是从头开始写一个数据文件。

如果你想“追加”新数据,你通常必须使用* Reader类将现有数据反序列化到内存中,然后合并/添加你想要的任何新数据,并使用* Writer对象然后将结果数据写回。看看ResXResourceReader,看看它是否支持你需要做的事情。

答案 1 :(得分:0)

我现在有一个查找表“FiletypeImage”,其文件类型为“.docx”,原始二进制数据也称为blob。此表在我的documentService中检索并缓存在静态变量中。使用由DocumentListViewModel调用的Get和Add方法。它对sqlite的速度非常快:)

相关问题