Resgen.exe (генератор файлов ресурсов)
Генератор файлов ресурсов преобразует текстовые файлы (.txt или .restext) и файлы формата ресурсов на основе XML (.resx) в двоичные файлы общеязыковой среды выполнения (.resources), которые можно внедрять в исполняемые двоичные файлы среды выполнения или компилировать во вспомогательные сборки. Дополнительные сведения о развертывании и извлечении файлов .resources см. в разделе Ресурсы в приложениях.
Resgen.exe осуществляет следующие преобразования:
Преобразование файлов .txt и .restext в файлы .resources или .resx.
Примечание Расширение RESTEXT впервые появилось в платформе .NET Framework версии 2.0.Формат RESTEXT-файлов идентичен формату TXT-файлов.Однако с помощью расширения .restext легче идентифицировать текстовые файлы, содержащие определения ресурсов.
Преобразование файлов .resources в файлы .resx или текстовые файлы.
Преобразование файлов .resx в файлы .resources или текстовые файлы.
Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.
Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.
– или –
Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).
В командной строке введите следующее:
resgen [parameters] [/compile]filename.extension [outputFilename.extension] [/str:lang[,namespace[,class[,file]]]]
Параметры
Аргумент |
Описание |
---|---|
filename.extension |
Имя входного файла, который следует преобразовать. Аргумент extension должен принимать одно из следующих значений:
|
outputFilename.extension |
Имя вновь создаваемого файла ресурсов. При преобразовании из файлов .txt, .restext или .resx этот аргумент необязателен. При преобразовании текстового файла или файла .resx в файл .resources можно задать расширение .resources. Если аргумент outputFilename не указан, Resgen.exe добавляет расширение .resources к входному аргументу filenameи записывает файл с таким именем в каталог, в котором содержится файл filename. Аргумент outputFilename является обязательным при преобразовании файла .resources. Для преобразования файла .resources в файл ресурсов на базе XML укажите расширение .resx. Для преобразования файла .resources в текстовый файл укажите расширение .txt или .restext. Файл .resources можно преобразовать в файл .txt только в том случае, если файл .resources содержит только строковые значения. |
Параметр |
Описание |
---|---|
/compile |
Позволяет указать несколько файлов .resx или текстовых файлов, которые следует преобразовать в несколько файлов .resources в ходе одной групповой операции. Если этот параметр отсутствует, можно указать только один исходный файл. Данный параметр не может использоваться одновременно с параметром /str:. |
/publicClass |
Создает класс строго типизированных ресурсов как открытый класс. Этот параметр игнорируется при отсутствии параметра /str:. |
/r:assembly |
Задает загрузку типов из сборки assembly. Если этот параметр задан, в файле .resx с предыдущей версией типа будет использоваться тип из assembly. |
/str:language[,namespace[,classname[,filename]]] |
Создает файл класса строго типизированных ресурсов на языке программирования, указанном параметром language (cs или C# означает C#, vb или visualbasic означает Visual Basic). Параметр namespace позволяет задать пространство имен по умолчанию для проекта, параметр classname позволяет задает имя сгенерированного класса, а параметр filename — имя файла класса.
Примечание
В версии .NET Framework 2.0 аргументы classname и filename игнорируются, если параметр namespace не задан.
При использовании параметра /str: разрешается указать только один входной файл, поэтому данный параметр нельзя задавать одновременно с параметром /compile. Если параметр namespace указан, а параметр classname — нет, имя класса определяется на основе имени выходного файла (например, точки заменяются символами подчеркивания). В результате строго типизированные ресурсы могут действовать неправильно. Чтобы этого избежать, укажите и имя класса, и имя выходного файла. |
/usesourcepath |
Задает использование текущего каталога входного файла для разрешения относительных путей к файлам. |
Заметки
Resgen.exe служит оболочкой для методов преобразования файлов, реализованных в следующих четырех классах:
ResourceReader Class Читает файл .resources.
ResourceWriter Class Создает файл .resources из указанных ресурсов.
ResXResourceReader Class Читает файл .resx.
ResXResourceWriter Class Создает файл .resx из указанных ресурсов.
Следует иметь в виду, что файл .resx, созданный при помощи класса ResXResourceWriter, нельзя использовать непосредственно в приложении .NET Framework. Перед добавлением файла в приложение его необходимо пропустить через Resgen.exe, чтобы преобразовать в файл .resources. Дополнительные сведения о реализации этих классов в пользовательском коде см. в соответствующих разделах справки.
Чтобы программа Resgen.exe могла выполнить синтаксический анализ входных данных, необходимо, чтобы текстовые файлы и файлы .resx имели правильный формат.
Текстовые файлы (.txt или .restext) могут содержать только строковые ресурсы. Строковые ресурсы используются при написании приложений, содержащих строки, которые будут переводиться на разные языки. Так можно легко локализовать строки меню, используя соответствующий строковый ресурс. Resgen.exe читает текстовые файлы, содержащие пары имя/значение, где имя представляет собой строку, описывающую ресурс, а значение является собственно строкой ресурса. Каждая пара имя/значение должна размещаться в отдельной строке и оформляться следующим образом:
name=value
Следует иметь в виду, что в текстовых файлах могут присутствовать пустые строки. Примеры.
EmptyString=
Текстовый файл должен быть сохранен в кодировке UTF-8 или Юникод, если он содержит символы, не входящие в стандартный латинский алфавит, например символы с диакритическими знаками, такими как седиль, умляут и тильда. Например, Resgen.exe удаляет символы расширенного набора ANSI при обработке текстового файла, не имеющего кодировки UTF-8 или Юникод.
Resgen.exe проверяет текстовый файл на повторяющиеся имена ресурсов. Если в текстовом файле содержатся совпадающие имена ресурсов, Resgen.exe выведет предупреждение и пропустит совпадающие имена. Дополнительные сведения о формате текстового файла см. в разделе Ресурсы в формате текстового файла.
Файл ресурсов .resx состоит из записей XML. В этих записях XML можно указывать строковые ресурсы, как в текстовых файлах. Основное преимущество файлов .resx по сравнению с текстовыми файлами состоит в том, что в них можно также указывать или внедрять объекты. При просмотре файла .resx внедренный объект (например, рисунок) отображается в двоичном виде, если эти двоичные данные являются частью манифеста ресурса. Как и текстовые файлы, файл .resx можно открыть в текстовом редакторе (таком, как Notepad или Microsoft Word), чтобы записывать, разбирать или иным образом обрабатывать его содержимое. Следует отметить, что для этого необходимо хорошо знать теги XML и знать структуру файла .resx. Дополнительные сведения о формате файла .resx см. в разделе Ресурсы в формате файла .resx.
Для создания файла .resources, содержащего внедренные объекты, отличные от строк, можно преобразовать с помощью Resgen.exe файл .resx, содержащий объект, или добавить ресурсы объектов из кода непосредственно в файл, используя методы, предоставляемые классом ResourceWriter Class. При использовании Resgen.exe для преобразования файла .resources, содержащего объекты, в текстовый файл все строковые ресурсы будут преобразованы правильно, но при этом нестроковые типы данных также будут записаны в файл в виде строк. При этом преобразовании внедренные объекты будут потеряны, а Resgen.exe выдаст сообщение об ошибке извлечения ресурсов.
В .NET Framework версии 2.0 реализована поддержка строго типизированных ресурсов. Поддержка строго типизированных ресурсов инкапсулирует доступ к ресурсам путем создания классов, содержащих набор статических свойств, доступных только для чтения (get), и тем самым предлагая альтернативный способ потребления ресурсов, вместо непосредственного использования методов класса ResourceManager. Основные функциональные возможности обеспечиваются заданием параметра командной строки /str в Resgen.exe, который включает функциональные возможности класса StronglyTypedResourceBuilder. Если задан параметр /str, результатом работы Resgen.exe будет класс, содержащий строго типизированные свойства, которые соответствуют ресурсам, указанным входным параметром. Этот класс обеспечивает строго типизированный доступ только для чтения к ресурсам, доступным в обработанном файле.
Средство Resgen.exe (генератор файлов ресурсов) позволяет создавать файлы .resources, а также строго типизированные оболочки для доступа к этим файлам .resources. При создании строго типизированной оболочки имя файла .resources должно соответствовать имени пространства имен и класса (например, MyNamespace.MyClass.resources) для сгенерированного кода. Однако средство Resgen.exe (генератор файлов ресурсов) позволяет указывать параметры, вызывающие создание файла .resources с несовместимым именем. Чтобы избежать этого, переименуйте выходные файлы с несовместимыми именами, после того как они будут созданы средством Resgen.exe (генератор файлов ресурсов).
Закончив создавать файлы .resources с помощью Resgen.exe, используйте Компоновщик сборок (Al.exe) для внедрения ресурсов в двоичные исполняемые файлы среды выполнения или их компиляции во вспомогательные сборки.
Примечание |
---|
В случае любого сбоя Resgen.exe возвращается значение "–1". |
Примечание |
---|
При создании класса строго типизированных ресурсов Resgen.exe не принимает имя файла .resx, содержащее пробелы.Все недопустимые символы заменяются символом подчеркивания ("_").Дополнительные сведения см. в разделе VerifyResourceName. |
Примеры
Следующая команда без параметров выводит на экран синтаксис команд и параметры Resgen.exe.
resgen
Следующая команда считывает пары имя/значение из файла myResources.txt и записывает двоичный файл ресурсов myResources.resources. Поскольку имя выходного файла прямо не указано, ему по умолчанию присваивается имя входного файла.
resgen myResources.txt
Следующая команда считывает пары имя/значение из файла myResources.restext и записывает двоичный файл ресурсов yourResources.resources.
resgen myResources.restext yourResources.resources
Следующая команда читает входной XML-файл myResources.resx и записывает двоичный файл ресурсов myResources.resources.
resgen myResources.resx myResources.resources
Следующая команда читает двоичный файл ресурсов myResources.resources и записывает выходной XML-файл myResources.resx.
resgen myResources.resources myResources.resx
Следующая команда читает входной XML-файл myResources.resx и записывает текстовые файлы myResources.txt и myResources.restext соответственно. Следует заметить, что если файл .resx содержит внедренные объекты, его не удастся правильно преобразовать в текстовые файлы.
resgen myResources.resx myResources.txt
resgen myResources.resx myResources.restext
Следующая команда читает входной XML-файл myResources.resx и записывает двоичный файл ресурсов myResources.resources. При этом также создается файл Visual Basic MyFile.vb с классом MyClass, который содержит строго типизированные свойства, соответствующие ресурсам, указанным во входном файле. Класс MyClass содержится в пространстве имен Namespace1.
resgen myResources.resx myResources.resources /str:C#,Namespace1,MyClass,MyFile.cs
См. также
Ссылки
Командная строка Visual Studio и пакета Windows SDK
Основные понятия
Другие ресурсы
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Апрель 2011 |
Добавлены сведения об использовании командных строк Visual Studio и Windows SDK. |
Улучшение информации. |