Получить относительный путь к связанному ресурсу в C # - PullRequest
3 голосов
/ 28 марта 2010

У меня есть несколько связанных ресурсов (в данном случае текстовых файлов) в проекте C #, над которым я работаю. Я знаю, что ресурсы связаны через относительный путь в файле ресурсов. Есть ли способ получить этот относительный путь из кода C #?

Если нет, то я пытаюсь передать этот файл ресурсов внешнему приложению в качестве аргумента командной строки. Если я не могу сделать это первым способом (что, очевидно, будет самым простым), любые другие предложения будут высоко оценены. Спасибо!

Ответы [ 3 ]

1 голос
/ 28 марта 2010

После компиляции файлы ресурсов являются частью библиотеки DLL.Таким образом, они больше не существуют в файловой системе, которую вы распространяете.Если вам нужны файлы ресурсов в качестве ресурса, то решение Hueso - единственный способ передачи файлов во внешнее приложение.

Однако, если вы не возражаете против доступа файлов к пользователю, выможно установить BuildAction на Content и установить Copy to Output Directory на Copy if newer или Copy always.Затем файлы копируются в выходной каталог и могут быть доступны оттуда.Если файлы находятся в подпапках, эти подпапки также копируются в выходной каталог.

Редактировать:

Различные действия по сборке и их влияние см. В:

0 голосов
/ 21 апреля 2010

Эти три строки принимают файл ресурсов и выводят его в байтовый массив, а затем записывают в файл на диске.

byte[] byteArray = new byte[Project.Properties.Resources.File.Length];
Project.Properties.Resources.File.CopyTo(byteArray, 0);

File.WriteAllBytes("Filepath", byteArray);
0 голосов
/ 28 марта 2010

Я думаю, что вы можете получить ресурс, сохранить его во временную папку и затем указать путь к внешнему приложению командной строки, это быстрый и грязный способ, но это основная идея:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("Resources.yourFile.txt");
var tempPath = Path.GetTempPath();
File.Save(stream, tempPath);

// use your tempPath here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...