mog13 Ответов: 1

Как скопировать файлы из ресурсов в другой каталог


Эй,

Я пытаюсь скопировать файлы, хранящиеся в качестве ресурсов в моем проекте wpf, в новый каталог.

Это делается для того, чтобы создать набор шаблонов папок с файлами по умолчанию, заполняющими его в каталоге по выбору пользователя. Мне удалось сделать это с некоторыми из более простых типов файлов, таких как значки и обычный текст, но я изо всех сил пытаюсь найти способ скопировать другие.

Есть ли лучший способ сделать их копию, кроме stream reader и writer? это, кажется, возвращает пустые файлы для некоторых файлов?

System.Drawing.Icon icon = Properties.Resources.icons;
              Stream IconStream = System.IO.File.OpenWrite(path+"\\Icons\\test.ico");
              icon.Save(IconStream);

Это прекрасно работает для значка, но приведенный ниже код не работает для одного из моих файлов справки; он создает его, но когда я смотрю на файл, он кажется пустым и не открывается
  writer = new StreamWriter(path + "\\Help\\en\\test.chm");
writer.Write(Properties.Resources.test);

(resources.test - это файл .chm)

Спасибо!

efkah

если во время установки, то попробуйте WIX (сделать пакет. я думаю, что это не поможет вам, если вы хотите, чтобы они остались в вашем resx)

1 Ответов

Рейтинг:
9

efkah

думаю, в моем последнем ответе было небольшое недоразумение. вот код, который я действительно тестировал и который должен работать.

string[] fileNames = Assembly.GetExecutingAssembly().GetManifestResourceNames();
foreach (String fileName in fileNames)
{
    using (FileStream fileStream = File.Create(@"c:\temp\" + fileName))
    {
Assembly.GetExecutingAssembly().GetManifestResourceStream(fileName).CopyTo(fileStream);
    }
}


обратите внимание, что для этого ресурс должен быть помечен как "встроенные ресурсы" (щелкните их правой кнопкой мыши в обозревателе решений, действие сборки "встроенные ресурсы").
Может быть, не на 100% решен, мне очень жаль.


Member 14827833

я копирую этот код и делаю свои файлы на встроенные ресурсы
но это же ошибка
"Не удалось найти часть пути "c:\temp\WindowsFormsApp3.Form1.resources'.'

Dave Kreskowiak

Возможно, вы захотите посмотреть на скопированный код и подумать о том, что он делает.

Ваши проекты работают от "C:\Temp - папка? Я готов поспорить, что эта папка даже не существует на вашем компьютере.