Что такое встроенный ресурс?
Внедренный ресурс в приложении C# — это файл, который включается как часть приложения. Файл не компилируется, но доступен из кода во время выполнения. Внедренные ресурсы могут быть любого типа файлов.
Чтобы добавить внедренный ресурс, просто включите элемент в проект C# и задайте для свойства Действие построения значение Внедренный ресурс.
Чтение ресурса
Чтение встроенного ресурса аналогично чтению любого типа файла, т.е. мы читаем его через Stream. Сложность заключается в том, что поток будет поступать из экземпляра Assembly, и вы должны убедиться, что используете правильный экземпляр. Это имеет смысл, поскольку файл встроен в конкретное приложение.
Ниже будет приведен код для чтения внедренного ресурса в виде текста (загрузка внизу включает код для чтения в виде массива байтов):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System; using System.IO; using System.Reflection; namespace nookery.ru { public static class ResourceHelper { public static string GetEmbeddedResource(string resourceName) { return GetEmbeddedResource(resourceName, Assembly.GetCallingAssembly()); } public static byte[] GetEmbeddedResourceAsBytes(string resourceName) { return GetEmbeddedResourceAsBytes(resourceName, Assembly.GetCallingAssembly()); } public static string GetEmbeddedResource(string resourceName, Assembly assembly) { resourceName = FormatResourceName(assembly, resourceName); using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName)) { if (resourceStream == null) return null; using (StreamReader reader = new StreamReader(resourceStream)) { return reader.ReadToEnd(); } } } public static byte[] GetEmbeddedResourceAsBytes(string resourceName, Assembly assembly) { using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName)) { byte[] content = new byte[resourceStream.Length]; resourceStream.Read(content, 0, content.Length); return content; } } private static string FormatResourceName(Assembly assembly, string resourceName) { return assembly.GetName().Name + "." + resourceName.Replace(" ", "_").Replace("\\", ".").Replace("/", "."); } } } |
Спасибо!
Пожалуйста