Добавление и редактирование ресурсов (Visual C#)

Обновлен: Ноябрь 2007

В приложениях Visual C# часто содержатся данные, не являющиеся исходным кодом. Такие данные называются ресурсами проекта и могут включать двоичные данные, текстовые файлы, аудио- и видеофайлы, таблицы строк, значки, изображения, XML-файлы или любой другой тип данных, необходимых для приложения. Данные ресурсов проекта хранятся в формате XML в файле с расширением RESX (имя по умолчанию – Resources.resx), который можно открыть в Обозревателе решений. Дополнительные сведения о ресурсах проекта содержатся в разделе Работа с файлами ресурсов.

Добавление ресурсов в проекты

Для добавления ресурсов в проект необходимо щелкнуть правой кнопкой мыши узел Свойства в проекте в Обозревателе решений, щелкнуть Открыть, а затем на странице Ресурсы в Конструкторе проектов нажать кнопку Добавить ресурс.

Ресурсы можно добавить в проект в качестве связанных ресурсов (внешние файлы) или как внедренные ресурсы (внедренные непосредственно в файл RESX).

  • При добавлении связанного ресурса в файле RESX со сведениями о ресурсах проекта будет указан только относительный путь на файл ресурса на диске. Если в качестве связанных ресурсов добавить изображения, видео или другие сложные файлы, их можно будет изменять в редакторе по умолчанию, сопоставленном с соответствующим типом файла в конструкторе ресурсов.

  • В случае внедренных ресурсов, данные хранятся непосредственно в файле ресурсов проекта (RESX). Строки могут храниться только как внедренные ресурсы.

Дополнительные сведения см. в разделах Связанные и внедренные ресурсы и Ресурсы в файле формата .Resx.

Редактирование ресурсов

Редактор ресурсов позволяет добавлять и изменять ресурсы проектов во время развертывания путем сопоставления приложения по умолчанию для редактирования каждого ресурса. Чтобы вызвать конструктор ресурсов, необходимо в Обозревателе решений щелкнуть “Свойства”, затем Открыть и перейти на вкладку Ресурсы в конструкторе проектов. Дополнительные сведения см. в разделе Страница "Ресурсы" в конструкторе проектов. На следующем рисунке показаны пункты меню конструктора ресурсов.

Элементы меню конструктора ресурса

Для редактирования ресурсов необходимо работать непосредственно в файле RESX, чтобы управлять отдельными символами или байтами. Именно поэтому сложные типы файлов удобно хранить в виде связанных ресурсов во время развертывания. Двоичный редактор можно использовать для редактирования файлов ресурсов, в том числе файла RESX, на двоичном уровне в шестнадцатеричном формате или формате ASCII. С помощью Редактор изображений можно редактировать значки и курсоры, а также файлы JPEG и GIF, хранящиеся в качестве связанных ресурсов. В качестве редакторов этих типов файлов можно выбрать и другие приложения. Дополнительные сведения содержатся в разделе Viewing and Editing Resources in a Resource Editor.

Компиляция ресурсов в сборки

При построении приложения Visual Studio вызывает средство resgen.exe для преобразования ресурсов приложения во внутренний класс с именем Resources. Этот класс находится в файле Resources.Designer.cs, который вложен в файл Resources.resx в Обозревателе решений. Класс Resources инкапсулирует все ресурсы проекта в статические свойства get только для чтения, что дает возможность получения строго-типизированных ресурсов во время выполнения. Во время построения в интегрированной среде разработки Visual C# все инкапсулированные данные ресурсов, включая как внедренные в файл RESX, так и связанные файлы, компилируются непосредственно в сборку приложения (файл EXE или DLL). Другими словами, интегрированная среда разработки Visual C# всегда использует параметр компилятора /resource. При построении из командной строки можно указать параметр компилятора /linkresource, что позволит развернуть ресурсы в отдельном файле из основной сборки приложения. Это дополнительная возможность, которая может потребоваться в исключительно редких случаях. Более типичный сценарий развертывания ресурсов из основной сборки приложения заключается в использовании вспомогательных сборок (см. описание далее).

Доступ к ресурсам во время выполнения

Чтобы получить доступ к ресурсу во время выполнения, просто создайте ссылку на него, как на любой другой член класса. В следующем примере демонстрируется получение ресурса растрового изображения с именем “Image01”. Следует отметить, что класс ресурсов входит в пространство имен с именем <projectName>.Properties, поэтому необходимо указать либо полное для имя каждого ресурса, либо добавить соответствующую директиву using в исходный файл, из которого осуществляется доступ к классу ресурсов.

System.Drawing.Bitmap bitmap1 = myProject.Properties.Resources.Image01;

Класс ResourceManager используется внутри свойством получения для создания нового экземпляра объекта.

Дополнительные сведения см. в разделах Ресурсы в приложениях и Генератор файлов ресурсов (Resgen.exe).

Ресурсы во вспомогательных сборках

Если создается приложение, которое планируется локализовать (перевести) на несколько языков, каждый набор строк, относящихся к определенному языку, можно хранить в отдельной вспомогательной сборке. При распространении приложения потребуется включить основную сборку приложения вместе с соответствующими вспомогательными сборками. Затем можно добавить другие вспомогательные сборки или изменить существующие без повторной компиляции основной сборки приложения. Дополнительные сведения см. в разделах Создание вспомогательных сборок и Locating and Using Resources for a Specific Culture.

См. также

Основные понятия

Знакомство с конструктором проектов

Другие ресурсы

Visual C#

Приступая к работе с Visual C#

Сборки в среде CLR

Глобализация и локализация приложений