Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Генератор файлов ресурсов (Resgen.exe) преобразует текстовые файлы (.txt или RESTEXT) и XML-файлы формата ресурсов (RESX) в двоичные файлы среды CLR (RESOURCES), которые могут быть внедрены в двоичную исполняемую или спутниковую сборку среды выполнения. Дополнительные сведения см. в разделе "Создание файлов ресурсов".
Resgen.exe — это программа преобразования ресурсов общего назначения, которая выполняет следующие задачи:
Преобразует .txt или RESTEXT-файлы в ресурсы или RESX-файлы. (Формат RESTEXT-файлов идентичен формату .txt файлов. Однако расширение RESTEXT помогает определить текстовые файлы, содержащие определения ресурсов.
Преобразует файлы ресурсов в текстовые или RESX-файлы.
Преобразует RESX-файлы в текстовые или .resources-файлы.
Извлекает строковые ресурсы из сборки в RESW-файл, подходящий для использования в приложении Магазина Windows 8.x.
Создает строго типизированный класс, предоставляющий доступ к отдельным именованным ресурсам и экземпляру ResourceManager .
Если Resgen.exe завершается ошибкой по какой-либо причине, возвращаемое значение равно -1.
Чтобы получить справку по Resgen.exe, можно использовать следующую команду без указанных параметров для отображения синтаксиса команды и параметров для Resgen.exe:
resgen
Вы также можете использовать переключатель /? :
resgen /?
Если вы используете Resgen.exe для создания двоичных файлов ресурсов, можно использовать компилятор языка для внедрения двоичных файлов в исполняемые сборки или использовать компоновщик сборок (Al.exe) для компиляции их в вспомогательные сборки.
Это средство автоматически устанавливается в Visual Studio. Чтобы запустить средство, используйте командную строку разработчика Visual Studio или Visual Studio Developer PowerShell.
В командной строке введите следующее:
Синтаксис
resgen [-define:symbol1[,symbol2,...]] [/useSourcePath] filename.extension | /compile filename.extension... [outputFilename.extension] [/r:assembly] [/str:lang[,namespace[,class[,file]]] [/publicclass]]
resgen filename.extension [outputDirectory]
Параметры
| Параметр или переключатель | Description |
|---|---|
/define:
symbol1[, symbol2,...] |
Начиная с .NET Framework 4.5, поддерживает условную компиляцию в текстовых файлах ресурсов (.txt или RESTEXT). Если символ соответствует символу , включенном в входной текстовый файл в #ifdef конструкции, связанный строковый ресурс включается в файл resources. Если входной текстовый #if ! файл содержит инструкцию с символом, который не определен /define параметром, связанный строковый ресурс включается в файл ресурсов./define игнорируется, если он используется с нетекстовых файлами. Символы чувствительны к регистру.Дополнительные сведения об этом параметре см. в разделе "Условный компиляция ресурсов " далее в этом разделе. |
useSourcePath |
Указывает, что текущий каталог входного файла должен использоваться для разрешения относительных путей к файлам. |
/compile |
Позволяет указать несколько RESX или текстовых файлов для преобразования в несколько файлов ресурсов в одной массовой операции. Если этот параметр не указан, можно указать только один входной аргумент файла. Выходные файлы называются filename.resources. Этот параметр нельзя использовать с параметром /str: .Дополнительные сведения об этом параметре см. в разделе "Компиляция и преобразование нескольких файлов " далее в этом разделе. |
/r:
assembly
|
Ссылается на метаданные из указанной сборки. Он используется при преобразовании RESX-файлов и позволяет Resgen.exe сериализовать или десериализировать ресурсы объектов. Он похож на /reference: параметры или /r: параметры компиляторов C# и Visual Basic. |
filename.extension |
Указывает имя входного файла для преобразования. Если вы используете первый, более длинный синтаксис командной строки, представленный перед этой таблицей, extension должен быть одним из следующих:.txt или RESTEXT Текстовый файл для преобразования в ресурсы или RESX-файл. Текстовые файлы могут содержать только строковые ресурсы. Сведения о формате файла см. в разделе "Ресурсы в текстовых файлах" статьи "Создание файлов ресурсов". RESX XML-файл ресурсов для преобразования в файл ресурсов .resources или text (.txt или RESTEXT). .ресурсы Двоичный файл ресурсов для преобразования в RESX-файл или текстовый (.txt или RESTEXT-файл). Если вы используете второй синтаксис командной строки, представленный перед этой таблицей, extension должен быть следующим:.exe или .dll Сборка .NET Framework (исполняемый файл или библиотека), строковые ресурсы которой необходимо извлечь в RESW-файл для разработки приложений Магазина Windows 8.x. |
outputFilename.extension |
Указывает имя и тип создаваемого файла ресурса. Этот аргумент необязателен при преобразовании из .txt, RESTEXT или RESX-файла в файл ресурсов. Если не указано outputFilename, Resgen.exe добавляет расширение .resources к входным данным filename и записывает файл в каталог, содержащий filename,extension.Аргумент outputFilename.extension является обязательным при преобразовании из файла ресурсов. Укажите имя файла с расширением RESX при преобразовании файла ресурсов .resources в XML-файл ресурсов. Укажите имя файла с расширением .txt или RESTEXT при преобразовании файла ресурсов в текстовый файл. Файл .resources следует преобразовать в файл .txt только в том случае, если файл ресурсов содержит только строковые значения. |
outputDirectory |
Для приложений Магазина Windows 8.x указывает каталог, в котором будет записан resw-файл, содержащий строковые ресурсы filename.extension .
outputDirectory должно уже существовать. |
/str:
language[,namespace[,classname[,filename]]]
|
Создает строго типизированный файл класса ресурсов на языке программирования, указанном в параметре language .
language может состоять из одного из следующих литерала:— для C#: c#или cscsharp.— для Visual Basic: vb или visualbasic.— для VBScript: vbs или vbscript.— для C++: c++, mcили cpp.— для JavaScript: js, jscriptили javascript.Параметр namespace задает пространство имен проекта по умолчанию, classname параметр задает имя созданного класса, а filename параметр задает имя файла класса.Этот /str: параметр позволяет использовать только один входной файл, поэтому его нельзя использовать с параметром /compile .Если namespace задано, но classname нет, имя класса является производным от имени выходного файла (например, знаки подчеркивания заменяются на периоды). Строго типизированные ресурсы могут работать неправильно. Чтобы избежать этого, укажите имя класса и имя выходного файла.Дополнительные сведения об этом параметре см. в разделе "Создание класса ресурсов строго типизированного типа " далее в этом разделе. |
/publicClass |
Создает строго типизированный класс ресурсов в качестве общедоступного класса. По умолчанию класс ресурсов находится internal в C# и Friend в Visual Basic.Этот параметр игнорируется, если /str: параметр не используется. |
Resgen.exe и типы файлов ресурсов
Чтобы Resgen.exe успешно преобразовать ресурсы, текстовые и RESX-файлы должны соответствовать правильному формату.
Текстовые файлы (.txt и RESTEXT)
Текстовые файлы (.txt или RESTEXT) могут содержать только строковые ресурсы. Строковые ресурсы полезны, если вы пишете приложение, которое должно иметь строки, переведенные на несколько языков. Например, можно легко регионизировать строки меню с помощью соответствующего ресурса строки. Resgen.exe считывает текстовые файлы, содержащие пары "имя-значение", где имя является строкой, описывающей ресурс, и значением является сама строка ресурса.
Замечание
Сведения о формате .txt и RESTEXT-файлах см. в разделе "Ресурсы в текстовых файлах" статьи "Создание файлов ресурсов".
Текстовый файл, содержащий ресурсы, должен быть сохранен с кодировкой UTF-8 или Юникод (UTF-16), если он не содержит только символы в диапазоне Basic Latin (до U+007F). Resgen.exe удаляет расширенные символы ANSI при обработке текстового файла, сохраненного с помощью кодировки ANSI.
Resgen.exe проверяет текстовый файл для повторяющихся имен ресурсов. Если текстовый файл содержит повторяющиеся имена ресурсов, Resgen.exe выдает предупреждение и игнорирует второе значение.
RESX-файлы
Формат файла ресурсов RESX состоит из XML-записей. В этих записях XML можно указать строковые ресурсы, как и в текстовых файлах. Основное преимущество RESX-файлов над текстовыми файлами заключается в том, что можно также указать или внедрить объекты. При просмотре RESX-файла можно увидеть двоичную форму внедренного объекта (например, рисунок), когда эта двоичная информация является частью манифеста ресурса. Как и в текстовых файлах, можно открыть RESX-файл с текстовым редактором (например, Блокнот или Microsoft Word) и записывать, анализировать и управлять его содержимым. Обратите внимание, что для этого требуется хорошее знание XML-тегов и структуры RESX-файла. Дополнительные сведения о формате RESX-файла см. в разделе "Ресурсы в RESX-файлах" статьи "Создание файлов ресурсов".
Чтобы создать файл .resources, содержащий внедренные объекты нестроки, необходимо либо использовать Resgen.exe для преобразования RESX-файла, содержащего объекты, либо добавления ресурсов объекта в файл непосредственно из кода путем вызова методов, предоставляемых ResourceWriter классом.
Если файл resx или .resources содержит объекты и используется Resgen.exe для преобразования его в текстовый файл, все строковые ресурсы будут преобразованы правильно, но типы данных нестроковых объектов также записываются в файл в виде строк. Вы потеряете внедренные объекты в преобразовании, и Resgen.exe сообщит об ошибке при извлечении ресурсов.
Преобразование между типами файлов ресурсов
При преобразовании между различными типами файлов ресурсов Resgen.exe может не выполнять преобразование или потерять сведения о конкретных ресурсах в зависимости от типов исходных и целевых файлов. В следующей таблице указаны типы преобразований, которые успешно выполняются при преобразовании из одного типа файла ресурса в другой.
| Преобразование из | Текстовый файл | В RESX-файл | В RESW-файл | Файл ресурсов |
|---|---|---|---|---|
| Текстовый (.txt или RESTEXT-файл) | -- | Проблемы не возникают | Не поддерживается | Проблемы не возникают |
| RESX-файл | Преобразование завершается ошибкой, если файл содержит нестроковые ресурсы (включая ссылки на файлы) | -- | Не поддерживается* | Проблемы не возникают |
| Файл .resources | Преобразование завершается ошибкой, если файл содержит нестроковые ресурсы (включая ссылки на файлы) | Проблемы не возникают | Не поддерживается | -- |
| сборка .exe или .dll | Не поддерживается | Не поддерживается | Только строковые ресурсы (включая имена путей) распознаются как ресурсы | Не поддерживается |
*В приложениях Магазина Windows 8.x файлы RESW используются для создания ресурсов. Несмотря на различие расширения файла, формат RESW-файла идентичен формату RESX-файла, за исключением того, что resw-файлы могут содержать только строки и пути к файлам. Resx-файлы, содержащие только строки и пути к файлам, можно преобразовать в RESW-файлы, просто изменив расширение файла.
Выполнение конкретных задач Resgen.exe
Вы можете использовать Resgen.exe различными способами: для компиляции текстового или XML-файла ресурсов в двоичный файл, преобразования между форматами файлов ресурсов и создания класса, который упаковывает ResourceManager функции и предоставляет доступ к ресурсам. В этом разделе содержатся подробные сведения о каждой задаче:
Компиляция ресурсов в двоичный файл
Чаще всего Resgen.exe используется для компиляции текстового файла ресурсов (.txt или RESTEXT-файла) или XML-файла ресурсов (RESX-файла) в двоичный файл ресурсов .resources. Затем выходной файл можно внедрить в основную сборку компилятором языка или вспомогательной сборкой компоновщиком сборок (AL.exe).
Синтаксис для компиляции файла ресурсов:
resgen inputFilename [outputFilename]
где находятся параметры:
inputFilename Имя файла, включая расширение, файла ресурса для компиляции. Resgen.exe компилирует только файлы с расширениями .txt, RESTEXT или RESX.
outputFilename Имя выходного файла. Если не указано outputFilename, Resgen.exe создает файл .resources с именем корневого inputFilename файла в том же каталоге, что inputFilenameи . Если outputFilename содержит путь к каталогу, каталог должен существовать.
Вы предоставляете полное пространство имен для файла ресурсов, указав его в имени файла и разделив его от имени корневого файла по периоду. Например, если outputFilename это MyCompany.Libraries.Strings.resourcesтак, пространство имен — MyCompany.Libraries.
Следующая команда считывает пары name/value в Resources.txt и записывает двоичный файл ресурсов с именем Resources.resources. Так как имя выходного файла не указано явно, он получает то же имя, что и входной файл по умолчанию.
resgen Resources.txt
Следующая команда считывает пары name/value в Resources.restext и записывает файл двоичных ресурсов с именем StringResources.resources.
resgen Resources.restext StringResources.resources
Следующая команда считывает входной файл на основе XML с именем Resources.resx и записывает двоичный файл ресурсов с именем Resources.resources.
resgen Resources.resx Resources.resources
Преобразование между типами файлов ресурсов
Помимо компиляции текстовых или XML-файлов ресурсов в двоичные файлы ресурсов .resources, Resgen.exe может преобразовать любой поддерживаемый тип файла в любой другой поддерживаемый тип файла. Это означает, что он может выполнять следующие преобразования:
.txt и RESTEXT-файлы в RESX-файлы.
RESX-файлы для .txt и RESTEXT-файлов.
Файлы ресурсов для .txt и RESTEXT-файлов.
Файлы .resources в RESX-файлы.
Синтаксис аналогичен приведенному в предыдущем разделе.
Кроме того, можно использовать Resgen.exe для преобразования внедренных ресурсов в сборку .NET Framework в RESW-файл для приложений Магазина Windows 8.x.
Следующая команда считывает двоичные ресурсы file Resources.resources и записывает xml-файл выходных данных с именем Resources.resx.
resgen Resources.resources Resources.resx
Следующая команда считывает текстовый файл ресурсов с именем StringResources.txt и записывает XML-файл ресурсов с именем LibraryResources.resx. Помимо хранения строковых ресурсов, resx-файл также можно использовать для хранения нестроковых ресурсов.
resgen StringResources.txt LibraryResources.resx
Следующие две команды считывают XML-файл ресурсов с именем Resources.resx и записывают текстовые файлы с именем Resources.txt и Resources.restext. Обратите внимание, что если RESX-файл содержит внедренные объекты, они не будут точно преобразованы в текстовые файлы.
resgen Resources.resx Resources.txt
resgen Resources.resx Resources.restext
Компиляция или преобразование нескольких файлов
Вы можете использовать /compile параметр для преобразования списка файлов ресурсов из одного формата в другой в одной операции. Синтаксис:
resgen /compile filename.extension [filename.extension...]
Следующая команда компилирует три файла, StringResources.txt, TableResources.resw и ImageResources.resw, в отдельные файлы ресурсов с именем StringResources.resources, TableResources.resources и ImageResources.resources.
resgen /compile StringResources.txt TableResources.resx ImageResources.resx
Экспорт ресурсов в RESW-файл
Если вы разрабатываете приложение Магазина Windows 8.x, вы можете использовать ресурсы из существующего классического приложения. Однако два типа приложений поддерживают разные форматы файлов. В классических приложениях ресурсы в тексте (.txt или RESTEXT) или RESX-файлах компилируются в двоичные ФАЙЛЫ РЕСУРСОВ. В приложениях Магазина Windows 8.x файлы RESW компилируются в файлы индекса ресурсов двоичного пакета (PRI). Вы можете использовать Resgen.exe для преодоления этого разрыва, извлекая ресурсы из исполняемого файла или вспомогательной сборки и записывая их в один или несколько resw-файлов, которые можно использовать при разработке приложения Магазина Windows 8.x.
Это важно
Visual Studio автоматически обрабатывает все преобразования, необходимые для включения ресурсов в переносимую библиотеку в приложение Магазина Windows 8.x. Использование Resgen.exe непосредственно для преобразования ресурсов в сборку в формат RESW-файла интересен только разработчикам, которые хотят разработать приложение Магазина Windows 8.x за пределами Visual Studio.
Синтаксис для создания RESW-файлов из сборки:
resgen filename.extension [outputDirectory]
где находятся параметры:
filename.extension Имя сборки .NET Framework (исполняемый файл или .DLL). Если файл не содержит ресурсов, Resgen.exe не создает файлы.
outputDirectory Существующий каталог, в который необходимо записать resw-файлы. Если outputDirectory опущено, resw-файлы записываются в текущий каталог. Resgen.exe создает один RESW-файл для каждого файла ресурсов в сборке. Корневое имя файла RESW совпадает с корневым именем файла ресурсов.
Следующая команда создает RESW-файл в каталоге Win8Resources для каждого файла ресурсов, внедренного в MyApp.exe:
resgen MyApp.exe Win8Resources
Условно скомпилированные ресурсы
Начиная с .NET Framework 4.5, Resgen.exe поддерживает условную компиляцию строковых ресурсов в текстовых файлах (.txt и RESTEXT). Это позволяет использовать один текстовый файл ресурсов в нескольких конфигурациях сборки.
В .txt или RESTEXT-файле используется #ifdef...
#endif конструктор для включения ресурса в файл двоичных ресурсов .resources, если определен символ, и используется #if !конструкция ... #endif для включения ресурса, если символ не определен. Во время компиляции вы определяете символы с помощью /define: параметра, за которым следует список символов с разделителями-запятыми. Сравнение учитывает регистр. Регистр символов, определенных в соответствии с /define регистром символов в текстовых файлах, которые необходимо скомпилировать.
Например, следующий файл с именем UIResources.text содержит строковый ресурс с именемAppTitle, который может принимать одно из трех значений, в зависимости от того, определены PRODUCTIONли символы или CONSULTRETAIL определены.
#ifdef PRODUCTION
AppTitle=My Software Company Project Manager
#endif
#ifdef CONSULT
AppTitle=My Consulting Company Project Manager
#endif
#ifdef RETAIL
AppTitle=My Retail Store Project Manager
#endif
FileMenuName=File
Затем файл можно скомпилировать в двоичный файл ресурсов с помощью следующей команды:
resgen /define:CONSULT UIResources.restext
При этом создается файл ресурсов .resources, содержащий два строковых ресурса. Значение AppTitle ресурса — "My Consulting Company Project Manager".
Создание класса ресурсов строго типизированного типа
Resgen.exe поддерживает строго типизированные ресурсы, которые инкапсулируют доступ к ресурсам путем создания классов, содержащих набор статических свойств только для чтения. Это обеспечивает альтернативу вызову методов ResourceManager класса непосредственно для получения ресурсов. Вы можете включить строго типизированную поддержку ресурсов с помощью /str параметра в Resgen.exe, который упаковывает функциональные возможности StronglyTypedResourceBuilder класса. При указании /str параметра выходные данные Resgen.exe — это класс, содержащий строго типизированные свойства, соответствующие ресурсам, на которые ссылается входной параметр. Этот класс предоставляет строго типизированный доступ только для чтения к ресурсам, доступным в обработанном файле.
Синтаксис для создания строго типизированного ресурса:
resgen inputFilename [outputFilename] /str:language[,namespace,[classname[,filename]]] [/publicClass]
Параметры и коммутаторы:
inputFilename Имя файла, включая расширение, файла ресурса, для которого создается строго типизированный класс ресурсов. Файл может быть текстовым, XML-файлом или двоичным ФАЙЛом ресурсов; он может иметь расширение .txt, RESTEXT, RESW или .resources.
outputFilename Имя выходного файла. Если outputFilename содержит путь к каталогу, каталог должен существовать. Если не указано outputFilename, Resgen.exe создает файл .resources с именем корневого inputFilename файла в том же каталоге, что inputFilenameи .
outputFilename может быть текстовым, XML-файлом или двоичным ФАЙЛом ресурсов. Если расширение файла отличается от расширения outputFilenameinputFilenameфайла, Resgen.exe выполняет преобразование файлов.
Если inputFilename это файл .resources, Resgen.exe копирует файл .resources, если outputFilename он также является файлом ресурсов. Если outputFilename опущен, Resgen.exe перезаписывает inputFilename идентичный файл ресурсов.
Язык Язык, в котором создается исходный код для строго типизированного класса ресурсов. Возможные значения: csи для кода C#, а visualbasic также csharp для кода Visual Basic, vbsvbvbscript а также для кода VBScript, а mcc++также cpp для кода CC#++.
пространство имен Пространство имен, содержащее строго типизированный класс ресурсов. Файл ресурсов и класс ресурсов должны иметь то же пространство имен. Сведения об указании пространства имен в файле двоичного файла см. в outputFilenameразделе "Компиляция ресурсов". Если пространство имен опущено, класс ресурсов не содержится в пространстве имен.
имя класса Имя строго типизированного класса ресурсов. Это должно соответствовать корневому имени файла ресурсов. Например, если Resgen.exe создает файл ресурсов с именем MyCompany.Libraries.Strings.resources, то имя строго типизированного класса ресурсов — Strings. Если имя класса опущено, созданный класс является производным от корневого outputFilenameимени. Если outputFilename опущен, созданный класс является производным от корневого inputFilenameимени.
Имя класса не может содержать недопустимые символы, такие как внедренные пробелы. Если имя класса содержит внедренные пробелы или если имя класса создается по умолчанию из inputFilename, а inputFilename содержит внедренные пробелы, Resgen.exe заменяет все недопустимые символы символами подчеркивания (_).
имя файла Имя файла класса.
/publicclass Делает строго типизированный класс ресурсов общедоступным, а не internal (в C#) или Friend (в Visual Basic). Это позволяет получить доступ к ресурсам извне сборки, в которой они внедрены.
Это важно
При создании строго типизированного класса ресурсов имя файла .resources должно соответствовать пространству имен и имени класса созданного кода. Однако Resgen.exe позволяет указать параметры, создающие файл ресурсов с несовместимым именем. Чтобы обойти это поведение, переименуйте выходной файл после его создания.
Строго типизированный класс ресурсов имеет следующие члены:
Конструктор без параметров, который можно использовать для создания экземпляра строго типизированного класса ресурсов.
A
static(C#) или (Visual Basic) иSharedсвойство только дляResourceManagerчтения, которое возвращает ResourceManager экземпляр, который управляет строго типизированным ресурсом.Статическое
Cultureсвойство, позволяющее задать язык и региональные параметры, используемые для извлечения ресурсов. По умолчанию его значение равноnull, что означает, что используется текущий язык и региональные параметры пользовательского интерфейса.Одно
static(C#) или (Visual Basic) иSharedсвойство только для чтения для каждого ресурса в файле .resources. Имя свойства — это имя ресурса.
Например, следующая команда компилирует файл ресурсов с именем StringResources.txt в StringResources.resources и создает класс с именем StringResources в файле исходного кода Visual Basic с именем StringResources.vb, который можно использовать для доступа к Resource Manager.
resgen StringResources.txt /str:vb,,StringResources