ОТКРЫТЬ файл Resource.resx вместо его создания, который переопределяет предыдущий файл Resource.resx - PullRequest
0 голосов
/ 12 июня 2011

Я запускаю приложение с помощью Visual Studio 2010. Затем я добавляю некоторые файлы в свое приложение, и значок каждого типа файла, такой как значок из doc, docx, xls, 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. Затем я закрываю свое приложение и проверяю файл IconImages.Resx в папке \ bin \. Предыдущие сохраненные изображения исчезают, и теперь у меня есть новые / другие изображения.

Почему я не могу сказать ОТКРЫТЬ файл .resx и добавить к нему что-нибудь? Каждый раз, когда я создаю объект ResourceWriter с тем же именем «IconImages.Resx», я перезаписываю предыдущий добавленный материал, и это глупо.

Как мой файл IconImages.Resx может оставаться живым в течение сеанса приложения, не перезаписываясь другими добавляемыми мной материалами?

Ответы [ 2 ]

1 голос
/ 12 июня 2011

Я не использовал ResXResourceWriter, но обычно * классы Writer просто записывают файл данных с нуля.

Если вы хотите "добавить" новые данные, вам обычно нужно использовать класс * Reader для десериализациисуществующие данные в память, затем объедините / добавьте любые новые данные, которые вы хотите, и используйте объект * Writer, чтобы затем записать полученные данные обратно.Посмотрите на ResXResourceReader, чтобы увидеть, поддерживает ли он то, что вам нужно для этого.

0 голосов
/ 15 июня 2011

У меня теперь есть таблица поиска "FiletypeImage" с типом файла ".docx" и необработанными двоичными данными, известными как blob. Эта таблица извлекается в моем documentService и кэшируется в статической переменной. с методом Get и Add, которые вызываются моим DocumentListViewModel. Это очень быстро, спасибо sqlite:)

...