Resgen.exe (генератор файлов ресурсов)Resgen.exe (Resource File Generator)

Генератор файлов ресурсов (Resgen.exe) преобразует текстовые файлы (TXT или RESTEXT) и файлы ресурсов на основе XML (RESX) в двоичные файлы среды CLR (RESOURCES), которые можно внедрить в двоичный исполняемый файл среды выполнения или вспомогательную сборку.The Resource File Generator (Resgen.exe) converts text (.txt or .restext) files and XML-based resource format (.resx) files to common language runtime binary (.resources) files that can be embedded in a runtime binary executable or satellite assembly. (См. раздел Создание файлов ресурсов.)(See Creating Resource Files.)

Программа Resgen.exe представляет собой универсальную служебную программу для преобразования ресурсов, которая выполняет следующие задачи.Resgen.exe is a general-purpose resource conversion utility that performs the following tasks:

  • Преобразование TXT-файлов и RESTEXT-файлов в файлы RESOURCES или RESX.Converts .txt or .restext files to .resources or .resx files. (Формат RESTEXT-файлов идентичен формату TXT-файлов.(The format of .restext files is identical to the format of .txt files. Однако с помощью расширения RESTEXT легче идентифицировать текстовые файлы, содержащие определения ресурсов.)However, the .restext extension helps you identify text files that contain resource definitions more easily.)

  • Преобразование RESOURCES-файлов в RESX-файлы или текстовые файлы.Converts .resources files to text or .resx files.

  • Преобразование RESX-файлов в RESOURCES-файлы или текстовые файлы.Converts .resx files to text or .resources files.

  • Извлекает строковые ресурсы из сборки в RESW-файл, который пригоден для использования в приложении Магазин Windows 8.xWindows 8.x Store.Extracts the string resources from an assembly into a .resw file that is suitable for use in a Магазин Windows 8.xWindows 8.x Store app.

  • Создает класс со строгой типизацией, который предоставляет доступ к ресурсам с отдельными именами и экземпляру ResourceManager.Creates a strongly typed class that provides access to individual named resources and to the ResourceManager instance.

В случае любого сбоя программа Resgen.exe возвращается значение "–1".If Resgen.exe fails for any reason, the return value is –1.

Чтобы получить справочные сведения по синтаксису команд и параметрам программы Resgen.exe, можно ввести следующую команду без параметров.To get help with Resgen,exe, you can use the following command, with no options specified, to display the command syntax and options for Resgen.exe:

resgen  

Также можно использовать ключ /?.You can also use the /? switch:

resgen /?  

При использовании программы Resgen.exe для создания двоичных RESOURCES-файлов можно воспользоваться языковым компилятором, чтобы внедрить двоичные файлы в исполняемые сборки, или Компоновщиком сборок (Al.exe), чтобы скомпилировать их во вспомогательные сборки.If you use Resgen,exe to generate binary .resources files, you can use a language compiler to embed the binary files into executable assemblies, or you can use the Assembly Linker (Al.exe) to compile them into satellite assemblies.

Эта программа автоматически устанавливается вместе с Visual Studio.This tool is automatically installed with Visual Studio. Чтобы применить этот инструмент, воспользуйтесь командной строкой разработчика для Visual Studio (или командной строкой Visual Studio в Windows 7).To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). Дополнительные сведения см. в разделе Командные строки.For more information, see Command Prompts.

В командной строке введите следующее.At the command prompt, type the following:

СинтаксисSyntax

resgen  [/define:symbol1[,symbol2,...]] [/useSourcePath] filename.extension  | /compile filename.extension... [outputFilename.extension] [/r:assembly] [/str:lang[,namespace[,class[,file]]] [/publicclass]]   
resgen filename.extension [outputDirectory]  

ПараметрыParameters

Параметр или ключParameter or switch ОписаниеDescription
/define: symbol1[, symbol2,...]/define: symbol1[, symbol2,...] Начиная с .NET Framework 4.5 поддерживается условная компиляция в файлы ресурсов на основе текста (TXT или RESTEXT).Starting with the .NET Framework 4.5, supports conditional compilation in text-based (.txt or .restext) resource files. Если symbol соответствует символу, включенному во входной текстовый файл в конструкции #ifdef, соответствующий строковый ресурс включается в RESOURCES-файл.If symbol corresponds to a symbol included in the input text file within a #ifdef construct, the associated string resource is included in the .resources file. Если входной текстовый файл содержит оператор #if ! с символом, который не определен ключом /define, соответствующий строковый ресурс включается в файл ресурсов.If the input text file includes an #if ! statement with a symbol that is not defined by the /define switch, the associated string resource is included in the resources file.

Параметр /define игнорируется, если он применяется для нетекстовых файлов./define is ignored if it is used with non-text files. В символах учитывается регистр.Symbols are case-sensitive.

Дополнительные сведения об этом параметре см. в разделе Условная компиляция ресурсов ниже.For more information about this option, see Conditionally Compiling Resources later in this topic.
useSourcePath Задает использование текущего каталога входного файла для разрешения относительных путей к файлам.Specifies that the input file's current directory is to be used to resolve relative file paths.
/compile Позволяет указать несколько RESX-файлов или текстовых файлов, которые следует преобразовать в несколько RESOURCES-файлов в ходе одной групповой операции.Enables you to specify multiple .resx or text files to convert to multiple .resources files in a single bulk operation. Если этот параметр не указывается, можно задать только один аргумент входного файла.If you do not specify this option, you can specify only one input file argument. Имена выходных файлов имеют формат имя_файла.resources.Output files are named filename.resources.

Данный параметр невозможно использовать одновременно с параметром /str:.This option cannot be used with the /str: option.

Дополнительные сведения об этом параметре см. в разделе Компиляция или преобразование нескольких файлов ниже.For more information about this option, see Compiling or Converting Multiple Files later in this topic.
/r: assembly/r: assembly Ссылается на метаданные из указанной сборки.References metadata from the specified assembly. Он используется при преобразовании RESX-файлов и позволяет программе Resgen.exe выполнять сериализацию или десериализацию ресурсов объектов.It is used when converting .resx files and allows Resgen.exe to serialize or deserialize object resources. Он похож на параметр /reference: или /r: для компиляторов C# и Visual Basic.It is similar to the /reference: or /r: options for the C# and Visual Basic compilers.
filename.extension Задает имя входного файла, который требуется преобразовать.Specifies the name of the input file to convert. Если используется первый, более длинный синтаксис командной строки, представленный перед этой таблицей, параметр extension должен быть одним из следующих.If you're using the first, lengthier command-line syntax presented before this table, extension must be one of the following:

TXT или RESTEXT.txt or .restext
Текстовый файл, который преобразуется в файл с расширением RESOURCES или RESX.A text file to convert to a .resources or a .resx file. Текстовые файлы могут содержать только строковые ресурсы.Text files can contain only string resources. Дополнительные сведения о формате файлов см. в разделе "Ресурсы в текстовых файлах" в статье Создание файлов ресурсов.For information about the file format, see the "Resources in Text Files" section of Creating Resource Files.

RESX.resx
Файл ресурсов на основе XML, который преобразуется в RESOURCES-файл или текстовый файл (с расширением TXT или RESTEXT).An XML-based resource file to convert to a .resources or a text (.txt or .restext) file.

RESOURCES.resources
Двоичный файл ресурсов, который преобразуется в RESX-файл или текстовый файл (с расширением TXT или RESTEXT).A binary resource file to convert to a .resx or a text (.txt or .restext) file.

Если используется второй, более короткий синтаксис командной строки, представленный перед этой таблицей, параметр extension должен быть одним из следующих.If you're using the second, shorter command-line syntax presented before this table, extension must be the following:

EXE или DLL.exe or .dll
Сборка .NET Framework (исполняемый файл или библиотека), строковые ресурсы которой должны извлекаться в RESW-файл для последующего использования при разработке приложений Магазин Windows 8.xWindows 8.x Store.A .NET Framework assembly (executable or library) whose string resources are to be extracted to a .resw file for use in developing Магазин Windows 8.xWindows 8.x Store apps.
outputFilename.extension Задает имя и тип создаваемого файла ресурсов.Specifies the name and type of the resource file to create.

При преобразовании из файлов с расширением TXT, RESTEXT или RESX в RESOURCES-файл этот аргумент необязателен.This argument is optional when converting from a .txt, .restext, or .resx file to a .resources file. Если аргумент outputFilename не указан, программа Resgen.exe добавляет расширение RESOURCES к входному файлу filename и записывает этот файл в каталог, который содержит filename,extension.If you do not specify outputFilename, Resgen.exe appends a .resources extension to the input filename and writes the file to the directory that contains filename,extension.

Аргумент outputFilename.extension является обязательным при преобразовании из RESOURCES-файла.The outputFilename.extension argument is mandatory when converting from a .resources file. Для преобразования RESOURCES-файла в файл ресурсов на основе XML следует указать имя файла.Specify a file name with the .resx extension when converting a .resources file to an XML-based resource file. Для преобразования RESOURCES-файла в текстовый файл следует указать имя файла с расширением TXT или RESTEXT.Specify a file name with the .txt or .restext extension when converting a .resources file to a text file. RESOURCES-файл можно преобразовать в TXT-файл только в том случае, если RESOURCES-файл содержит только строковые значения.You should convert a .resources file to a .txt file only when the .resources file contains only string values.
outputDirectory Для приложений Магазин Windows 8.xWindows 8.x Store задает каталог, в котором будет сохранен RESW-файл, содержащий строковые ресурсы в filename.extension.For Магазин Windows 8.xWindows 8.x Store apps, specifies the directory in which a .resw file that contains the string resources in filename.extension will be written. Каталог outputDirectory должен существовать.outputDirectory must already exist.
/str: language[,namespace[,classname[,filename]]]/str: language[,namespace[,classname[,filename]]] Создает файл класса ресурса со строгой типизацией на языке программирования, указанном в параметре language.Creates a strongly typed resource class file in the programming language specified in the language option. language может состоять из одного из следующих литералов.language can consist of one of the following literals:

Для C#: c#, cs или csharp.- For C#: c#, cs, or csharp.
Для Visual Basic: vb или visualbasic.- For Visual Basic: vb or visualbasic.
Для VBScript: vbs или vbscript.- For VBScript: vbs or vbscript.
Для C++: c++, mc или cpp.- For C++: c++, mc, or cpp.
Для JavaScript: js, jscript или javascript.- For JavaScript: js, jscript, or javascript.

Параметр namespace задает для проекта пространство имен по умолчанию, параметр classname задает имя создаваемого класса, а параметр filename — имя файла класса.The namespace option specifies the project's default namespace, the classname option specifies the name of the generated class, and the filename option specifies the name of the class file.

С помощью параметра /str: можно указать только один входной файл, поэтому этот параметр нельзя использовать с параметром /compile.The /str: option allows only one input file, so it cannot be used with the /compile option.

Если указан параметр namespace, а параметр classname — нет, имя класса задается на основе имени выходного файла (например, точки заменяются символами подчеркивания).If namespace is specified but classname is not, the class name is derived from the output file name (for example, underscores are substituted for periods). В результате ресурсы со строгой типизацией могут работать неправильно.The strongly typed resources might not work correctly as a result. Чтобы этого избежать, укажите и имя класса, и имя выходного файла.To avoid this, specify both class name and output file name.

Дополнительные сведения об этом параметре см. в разделе Создание класса ресурсов со строгой типизацией ниже.For more information about this option, see Generating a Strongly Typed Resource Class later in this topic.
/publicClass Создает класс ресурса со строгой типизацией как открытый класс.Creates a strongly typed resource class as a public class. По умолчанию классом ресурса в C# является internal, а в Visual Basic — Friend.By default, the resource class is internal in C# and Friend in Visual Basic.

Этот параметр игнорируется, если не указан параметр /str:.This option is ignored if the /str: option is not used.

Программа Resgen.exe и типы файлов ресурсовResgen.exe and Resource File Types

Чтобы программа Resgen.exe могла успешно выполнять преобразование, файлы ресурсов, текстовые файлы и RESX-файлы должны иметь правильный формат.In order for Resgen.exe to successfully convert resources, text and .resx files must follow the correct format.

Текстовые файлы (TXT и RESTEXT)Text (.txt and .restext) Files

Текстовые файлы (TXT или RESTEXT) могут содержать только строковые ресурсы.Text (.txt or .restext) files may contain only string resources. Строковые ресурсы используются при создании приложений, содержащих строки, которые будут переводиться на разные языки.String resources are useful if you are writing an application that must have strings translated into several languages. Например, строки меню можно легко локализовать с помощью соответствующего строкового ресурса.For example, you can easily regionalize menu strings by using the appropriate string resource. Программа Resgen.exe считывает текстовые файлы, содержащие пары имя/значение, где имя представляет собой строку, описывающую ресурс, а значение является собственно строкой ресурса.Resgen.exe reads text files that contain name/value pairs, where the name is a string that describes the resource and the value is the resource string itself.

Примечание

Дополнительные сведения о формате TXT- и RESTEXT-файлов см. в разделе "Ресурсы в текстовых файлах" в статье Создание файлов ресурсов.For information about the format of .txt and .restext files, see the "Resources in Text Files" section of Creating Resource Files.

Текстовый файл, содержащий ресурсы, должен быть сохранен в кодировке UTF-8 или Юникод (UTF-16), кроме тех случаев, когда он содержит только символы основной латиницы (до U+007F).A text file that contains resources must be saved with UTF-8 or Unicode (UTF-16) encoding unless it contains only characters in the Basic Latin range (to U+007F). Программа Resgen.exe удаляет знаки расширенного набора ANSI при обработке текстового файла, который сохранен в кодировке ANSI.Resgen.exe removes extended ANSI characters when it processes a text file that is saved using ANSI encoding.

Программа Resgen.exe проверяет текстовый файл на наличие повторяющихся имен ресурсов.Resgen.exe checks the text file for duplicate resource names. Если в текстовом файле содержатся совпадающие имена ресурсов, программа Resgen.exe выведет предупреждение и проигнорирует второе значение.If the text file contains duplicate resource names, Resgen.exe will emit a warning and ignore the second value.

RESX-файлы.resx Files

Файл ресурсов RESX состоит из записей XML.The .resx resource file format consists of XML entries. В этих записях XML можно указывать строковые ресурсы как в текстовых файлах.You can specify string resources within these XML entries, as you would in text files. Основное преимущество RESX-файлов по сравнению с текстовыми файлами состоит в том, что в них можно также указывать или внедрять объекты.A primary advantage of .resx files over text files is that you can also specify or embed objects. При просмотре RESX-файла внедренный объект (например, рисунок) отображается в двоичном виде, если эти двоичные данные являются частью манифеста ресурса.When you view a .resx file, you can see the binary form of an embedded object (for example, a picture) when this binary information is a part of the resource manifest. Как и текстовые файлы, RESX-файл можно открыть в текстовом редакторе (например, в Notepad или Microsoft Word), чтобы записывать, анализировать или иным образом обрабатывать его содержимое.As with text files, you can open a .resx file with a text editor (such as Notepad or Microsoft Word) and write, parse, and manipulate its contents. Следует отметить, что для этого необходимо хорошо знать теги XML и структуру RESX-файла.Note that this requires a good knowledge of XML tags and the .resx file structure. Дополнительные сведения о формате RESX-файла см. в разделе "Ресурсы в RESX-файлах" в статье Создание файлов ресурсов.For more details on the .resx file format, see the "Resources in .resx Files" section of Creating Resource Files.

Чтобы создать RESOURCES-файл, содержащий внедренные нестроковые объекты, можно преобразовать с помощью программы Resgen.exe RESX-файл, содержащий объекты, или добавить ресурсы объектов из кода непосредственно в файл, используя методы класса ResourceWriter.In order to create a .resources file that contains embedded nonstring objects, you must either use Resgen.exe to convert a .resx file containing objects or add the object resources to your file directly from code by calling the methods provided by the ResourceWriter class.

При использовании программы Resgen.exe для преобразования RESX-файла или RESOURCES-файла, содержащего объекты, в текстовый файл все строковые ресурсы будут преобразованы правильно, но при этом типы данных нестроковых объектов также будут записаны в файл в виде строк.If your .resx or .resources file contains objects and you use Resgen.exe to convert it to a text file, all the string resources will be converted correctly, but the data types of the nonstring objects will also be written to the file as strings. При таком преобразовании внедренные объекты будут потеряны, а программа Resgen.exe выдаст сообщение об ошибке извлечения ресурсов.You will lose the embedded objects in the conversion, and Resgen.exe will report that an error occurred in retrieving the resources.

Преобразование типов файлов ресурсовConverting Between Resources File Types

При преобразовании разных типов файлов ресурсов программа Resgen.exe может быть не в состоянии выполнять преобразование или может терять сведения о конкретных ресурсах в зависимости от типа исходного и конечного файлов.When you convert between different resource file types, Resgen.exe may not be able to perform the conversion or may lose information about specific resources, depending on the source and target file types. В следующей таблице указаны типы успешных преобразований из файла ресурсов одного типа в другой.The following table specifies the types of conversions that are successful when converting from one resource file type to another.

Тип, из которого выполняется преобразованиеConvert from В текстовый файлTo text file В RESX-файлTo .resx file В RESW-файлTo .resw file В RESOURCES-файлTo .resources file
Текстовый файл (TXT или RESTEXT)Text (.txt or .restext) file -- Без проблемNo issues Не поддерживаетсяNot supported Без проблемNo issues
RESX-файл.resx file Преобразование завершается неудачей, если файл содержит нестроковые ресурсы (включая файловые связи)Conversion fails if file contains non-string resources (including file links) -- Не поддерживаетсяNot supported Без проблемNo issues
RESOURCES-файл.resources file Преобразование завершается неудачей, если файл содержит нестроковые ресурсы (включая файловые связи)Conversion fails if file contains non-string resources (including file links) Без проблемNo issues Не поддерживаетсяNot supported --
Сборка EXE или DLL.exe or .dll assembly Не поддерживаетсяNot supported Не поддерживаетсяNot supported Только строковые ресурсы (включая пути) считаются ресурсамиOnly string resources (including path names) are recognized as resources Не поддерживаетсяNot supported

Выполнение конкретных задач Resgen.exePerforming Specific Resgen.exe Tasks

Программу Resgen.exe можно использовать разными способами: компилировать файл ресурсов на основе текста или XML в двоичный файл, выполнять преобразование файлов в разные форматы, создавать класс, который образует оболочку для функциональных возможностей ResourceManager и предоставляет доступ к ресурсам.You can use Resgen.exe in diverse ways: to compile a text-based or XML-based resource file into a binary file, to convert between resource file formats, and to generate a class that wraps ResourceManager functionality and provides access to resources. В данном разделе представлены подробные сведения по каждой задаче.This section provides detailed information about each task:

Компиляция ресурсов в двоичный файлCompiling Resources into a Binary File

Чаще всего программа Resgen.exe используется для компиляции файла ресурсов на основе текста (TXT или RESTEXT) или XML (RESX) в двоичный RESOURCES-файл.The most common use of Resgen.exe is to compile a text-based resource file (a .txt or .restext file) or an XML-based resource file (a .resx file) into a binary .resources file. После компиляции выходной файл можно встроить в основную сборку с помощью языкового компилятора или во вспомогательную сборку с помощью Компоновщика сборок (AL.exe).The output file then can be embedded in a main assembly by a language compiler or in a satellite assembly by Assembly Linker (AL.exe).

Синтаксис компиляции файла ресурсов выглядит следующим образом.The syntax to compile a resource file is:

resgen inputFilename [outputFilename]   

Используются следующие параметры.where the parameters are:

inputFilename
Имя компилируемого файла ресурсов, включая расширение.The file name, including the extension, of the resource file to compile. Программа Resgen.exe компилирует только файлы с расширениями TXT, RESTEXT или RESX.Resgen.exe only compiles files with extensions of .txt, .restext, or .resx.

outputFilename
Имя выходного файла.The name of the output file. Если не указывать outputFilename, программа Resgen.exe создаст RESOURCES-файл с корневым именем файла inputFilename в том же каталоге, что и inputFilename.If you omit outputFilename, Resgen.exe creates a .resources file with the root file name of inputFilename in the same directory as inputFilename. Если outputFilename содержит путь к каталогу, этот каталог должен существовать.If outputFilename includes a directory path, the directory must exist.

Полное имя пространства имен для RESOURCES-файла указывается в имени файла и отделяется от корневого имени файла точкой.You provide a fully qualified namespace for the .resources file by specifying it in the file name and separating it from the root file name by a period. Например, если параметр outputFilename имеет значение MyCompany.Libraries.Strings.resources, пространство имен имеет вид "MyCompany.Libraries".For example, if outputFilename is MyCompany.Libraries.Strings.resources, the namespace is MyCompany.Libraries.

Следующая команда считывает пары имя/значение из файла "Resources.txt" и создает двоичный RESOURCES-файл с именем "Resources.resources".The following command reads the name/value pairs in Resources.txt and writes a binary .resources file named Resources.resources. Поскольку имя выходного файла не указано явным образом, его имя по умолчанию аналогично имени входного файла.Because the output file name is not specified explicitly, it receives the same name as the input file by default.

resgen Resources.txt   

Следующая команда считывает пары имя/значение из файла "Resources.restext" и создает двоичный файл ресурсов с именем "StringResources.resources".The following command reads the name/value pairs in Resources.restext and writes a binary resources file named StringResources.resources.

resgen Resources.restext StringResources.resources  

Следующая команда считывает входной файл на основе XML "Resources.resx" и создает двоичный RESOURCES-файл с именем "Resources.resources".The following command reads an XML-based input file named Resources.resx and writes a binary .resources file named Resources.resources.

resgen Resources.resx Resources.resources  

Преобразование типов файлов ресурсовConverting Between Resource File Types

Помимо компиляции файлов ресурсов на основе текста или XML в двоичные файлы ресурсов программа Resgen.exe может преобразовать любой поддерживаемый тип файлов в другой.In addition to compiling text-based or XML-based resource files into binary .resources files, Resgen.exe can convert any supported file type to any other supported file type. Это означает, что программа может выполнить следующие преобразования.This means that it can perform the following conversions:

  • TXT-файлы и RESTEXT-файлы в RESX-файлы..txt and .restext files to .resx files.

  • RESX-файлы в TXT-файлы и RESTEXT-файлы..resx files to .txt and .restext files.

  • RESOURCES-файлы в TXT-файлы и RESTEXT-файлы..resources files to .txt and .restext files.

  • RESOURCES-файлы в RESX-файлы..resources files to .resx files.

Синтаксис аналогичен синтаксису, который показан в предыдущем разделе.The syntax is the same as that shown in the previous section.

Кроме того, с помощью программы Resgen.exe можно выполнять преобразование внедренных ресурсов в сборке .NET Framework в RESW-файл для приложений Магазин Windows 8.xWindows 8.x Store.In addition, you can use Resgen.exe to convert embedded resources in a .NET Framework assembly to a .resw file tor Магазин Windows 8.xWindows 8.x Store apps.

Следующая команда считывает двоичный файл ресурсов "Resources.resources" и создает выходной файл на основе XML с именем "Resources.resx".The following command reads a binary resources file Resources.resources and writes an XML-based output file named Resources.resx.

resgen Resources.resources Resources.resx  

Следующая команда считывает файл ресурсов на основе текста "StringResources.txt" и создает файл ресурсов на основе XML с именем "LibraryResources.resx".The following command reads a text-based resources file named StringResources.txt and writes an XML-based resources file named LibraryResources.resx. Помимо хранения строковых ресурсов RESX-файл можно также использовать для хранения нестроковых ресурсов.In addition to containing string resources, the .resx file could also be used to store non-string resources.

resgen StringResources.txt LibraryResources.resx  

Следующие две команды считывают файл ресурсов на основе XML "Resources.resx" и создают текстовые файлы с именами "Resources.txt" и "Resources.restext".The following two commands read an XML-based resources file named Resources.resx and write text files named Resources.txt and Resources.restext. Следует заметить, что если RESX-файл содержит внедренные объекты, они будут неправильно преобразованы в текстовые файлы.Note that if the .resx file contains any embedded objects, they will not be accurately converted into the text files.

resgen Resources.resx Resources.txt  
resgen Resources.resx Resources.restext  

Компиляция или преобразование нескольких файловCompiling or Converting Multiple Files

С помощью ключа /compile можно преобразовать список файлов ресурсов из одного формата в другой за одну операцию.You can use the /compile switch to convert a list of resource files from one format to another in a single operation. Синтаксис выглядит следующим образом.The syntax is:

resgen /compile filename.extension [filename.extension...]  

Следующая команда компилирует три файла — "StringResources.txt", "TableResources.resw" и "ImageResources.resw" — в отдельные RESOURCES-файлы с именами "StringResources.resources", "TableResources.resources" и "ImageResources.resources".The following command compiles three files, StringResources.txt, TableResources.resw, and ImageResources.resw, into separate .resources files named StringResources.resources, TableResources.resources, and ImageResources.resources.

resgen /compile StringResources.txt TableResources.resx ImageResources.resx  

Экспорт ресурсов в RESW-файлExporting Resources to a .resw File

При разработке приложения Магазин Windows 8.xWindows 8.x Store может понадобиться использовать ресурсы из существующего классического приложения.If you're developing a Магазин Windows 8.xWindows 8.x Store app, you may want to use resources from an existing desktop app. Однако два типа приложений поддерживают разные форматы файлов.However, the two kinds of applications support different file formats. В классических приложениях ресурсы в текстовых файлах (TXT или RESTEXT) или RESX-файлах компилируются в двоичные RESOURCES-файлы.In desktop apps, resources in text (.txt or .restext) or .resx files are compiled into binary .resources files. В приложениях Магазин Windows 8.xWindows 8.x Store RESW-файлы компилируются в двоичные PRI-файлы.In Магазин Windows 8.xWindows 8.x Store apps, .resw files are compiled into binary package resource index (PRI) files. Чтобы решить эту проблему, с помощью программы Resgen.exe можно извлекать ресурсы из исполняемого файла или вспомогательной сборки и записывать их в один или несколько RESW-файлов, которые можно использовать при разработке приложения Магазин Windows 8.xWindows 8.x Store.You can use Resgen.exe to bridge this gap by extracting resources from an executable or a satellite assembly and writing them to one or more .resw files that can be used when developing a Магазин Windows 8.xWindows 8.x Store app.

Важно!

Visual Studio автоматически обрабатывает все преобразования, необходимые для включения ресурсов в переносимой библиотеке в приложение Магазин Windows 8.xWindows 8.x Store.Visual Studio automatically handles all conversions necessary for incorporating the resources in a portable library into a Магазин Windows 8.xWindows 8.x Store app. Использование программы Resgen.exe для преобразования ресурсов в сборке в файл формата RESW напрямую представляет интерес только для разработчиков, которые разрабатывают приложения Магазин Windows 8.xWindows 8.x Store без Visual Studio.Using Resgen.exe directly to convert the resources in an assembly to .resw file format is of interest only to developers who want to develop a Магазин Windows 8.xWindows 8.x Store app outside of Visual Studio.

Синтаксис для создания RESW-файлов из сборки выглядит следующим образом.The syntax to generate .resw files from an assembly is:

resgen filename.extension  [outputDirectory]  

Используются следующие параметры.where the parameters are:

filename.extension
Имя сборки .NET Framework (исполняемый файл или библиотека DLL).The name of a .NET Framework assembly (an executable or .DLL). Если файл не содержит ресурсы, программа Resgen.exe не создает файлы.If the file contains no resources, Resgen.exe does not create any files.

outputDirectory
Существующий каталог, в котором сохраняются RESW-файлы.The existing directory to which to write the .resw files. Если параметр outputDirectory не задан, RESW-файлы записываются в текущий каталог.If outputDirectory is omitted, .resw files are written to the current directory. Программа Resgen.exe создает один RESW-файл для каждого RESOURCES-файла в сборке.Resgen.exe creates one .resw file for each .resources file in the assembly. Корневое имя RESW-файла аналогично корневому имени RESOURCES-файла.The root file name of the .resw file is the same as the root name of the .resources file.

Следующая команда создает RESW-файл в каталоге "Win8Resources" для каждого RESOURCES-файла, внедренного в приложение MyApp.exe.The following command creates a .resw file in the Win8Resources directory for each .resources file embedded in MyApp.exe:

resgen MyApp.exe Win8Resources  

Условная компиляция ресурсовConditionally Compiling Resources

Начиная с .NET Framework 4.5 программа Resgen.exe поддерживает условную компиляцию строковых ресурсов в текстовых файлах (TXT и RESTEXT).Starting with the .NET Framework 4.5, Resgen.exe supports conditional compilation of string resources in text (.txt and .restext) files. Благодаря такому подходу можно использовать один файл ресурсов на основе текста для нескольких конфигураций построения.This enables you to use a single text-based resource file in multiple build configurations.

В TXT- или RESTEXT-файле используется конструкция #ifdef...#endif,In a .txt or .restext file, you use the #ifdef#endif чтобы включить ресурс в двоичный RESOURCES-файл, если символ задан, а конструкция #if !... #endif используется, чтобы включить ресурс, если символ не задан.construct to include a resource in the binary .resources file if a symbol is defined, and you use the #if !... #endif construct to include a resource if a symbol is not defined. Во время компиляции символы задаются с помощью параметра /define:, за которым следует список разделенных запятыми символов.At compile time, you then define symbols by using the /define: option followed by a comma-delimited list of symbols. В сравнении учитывается регистр символов, который задается параметром /define и должен соответствовать регистру символов в компилируемых текстовых файлах.The comparison is cased-sensitive; the case of symbols defined by /define must match the case of symbols in the text files to be compiled.

Например, следующий файл с именем "UIResources.rext" содержит строковый ресурс с именем AppTitle, который может принимать одно из трех значений в зависимости от заданного символа: PRODUCTION, CONSULT или RETAIL.For example, the following file named UIResources.rext includes a string resource named AppTitle that can take one of three values, depending on whether symbols named PRODUCTION, CONSULT, or RETAIL are defined.

#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  

После этого файл можно скомпилировать в двоичный RESOURCES-файл с помощью следующей команды.The file can then be compiled into a binary .resources file with the following command:

resgen /define:CONSULT UIResources.restext  

При этом создается RESOURCES-файл, содержащий два строковых ресурса.This produces a .resources file that contains two string resources. Значение ресурса AppTitle — "My Consulting Company Project Manager".The value of the AppTitle resource is "My Consulting Company Project Manager".

Создание класса ресурсов со строгой типизациейGenerating a Strongly Typed Resource Class

Программа Resgen.exe поддерживает ресурсы со строгой типизацией, при этом доступ к ресурсам инкапсулируется путем создания классов, содержащих набор статических свойств только для чтения.Resgen.exe supports strongly typed resources, which encapsulates access to resources by creating classes that contain a set of static read-only properties. Это альтернативный способ прямого вызова методов класса ResourceManager для извлечения ресурсов.This provides an alternative to calling the methods of the ResourceManager class directly to retrieve resources. Можно включить поддержку ресурсов со строгой типизацией с помощью параметра /str в программе Resgen.exe, при которой реализуются функциональные возможности класса StronglyTypedResourceBuilder.You can enable strongly typed resource support by using the /str option in Resgen.exe, which wraps the functionality of the StronglyTypedResourceBuilder class. Если задан параметр /str, результатом работы программы Resgen.exe будет класс, содержащий свойства со строгой типизацией, которые соответствуют ресурсам, указанным входным параметром.When you specify the /str option, the output of Resgen.exe is a class that contains strongly typed properties that match the resources that are referenced in the input parameter. Этот класс обеспечивает доступ только для чтения со строгой типизацией к ресурсам в отрабатываемом файле.This class provides strongly typed read-only access to the resources that are available in the file processed.

Синтаксис для создания ресурса со строгой типизацией выглядит следующим образом.The syntax to create a strongly typed resource is:

resgen inputFilename [outputFilename] /str:language[,namespace,[classname[,filename]]] [/publicClass]  

Параметры и ключи.The parameters and switches are:

inputFilename
Имя файла ресурсов, включая расширение, для которого создается класс ресурса со строгой типизацией.The file name, including the extension, of the resource file for which to generate a strongly typed resource class. Файл может быть двоичным RESOURCES-файлом или RESOURCES-файлом на основе текста или XML с расширением RESW, TXT, RESTEXT или RESOURCES.The file can be a text-based, XML-based, or binary .resources file; it can have an extension of .txt, .restext, .resw, or .resources.

outputFilename
Имя выходного файла.The name of the output file. Если outputFilename содержит путь к каталогу, этот каталог должен существовать.If outputFilename includes a directory path, the directory must exist. Если не указывать outputFilename, программа Resgen.exe создаст RESOURCES-файл с корневым именем файла inputFilename в том же каталоге, что и inputFilename.If you omit outputFilename, Resgen.exe creates a .resources file with the root file name of inputFilename in the same directory as inputFilename.

Файл outputFilename может быть двоичным RESOURCES-файлом или файлом на основе текста или XML.outputFilename can be a text-based, XML-based, or binary .resources file. Если расширение файла outputFilename отличается от расширения файла inputFilename, программа Resgen.exe выполняет преобразование файла.If the file extension of outputFilename is different from the file extension of inputFilename, Resgen.exe performs the file conversion.

Если файл inputFilename является RESOURCES-файлом, программа Resgen.exe копирует RESOURCES-файл, если файл outputFilename также является RESOURCES-файлом.If inputFilename is a .resources file, Resgen.exe copies the .resources file if outputFilename is also a .resources file. Если outputFilename не задано, программа Resgen.exe перезаписывает файл inputFilename аналогичным RESOURCES-файлом.If outputFilename is omitted, Resgen.exe overwrites inputFilename with an identical .resources file.

languagelanguage
Язык, применяемый для создания исходного кода для класса ресурсов со строгой типизацией.The language in which to generate source code for the strongly-typed resource class. Возможные значения: cs, C#, и csharp для кода на C# vb и visualbasic для кода на Visual Basic; vbs и vbscript для кода на VBScript; и c++, mc и cpp для кода на C++.Possible values are cs, C#, and csharp for C# code, vb and visualbasic for Visual Basic code, vbs and vbscript for VBScript code, and c++, mc, and cpp for C++ code.

namespacenamespace
Пространство имен, содержащее класс ресурсов со строгой типизацией.The namespace that contains the strongly typed resource class. RESOURCES-файл и класс ресурсов должны иметь одно и то же пространство имен.The .resources file and the resource class should have the same namespace. Дополнительные сведения о задании пространства имен в параметре outputFilename см. в разделе Компиляция ресурсов в двоичный файл.For information about specifying the namespace in the outputFilename, see Compiling Resources into a Binary File. Если параметр namespace не задан, класс ресурсов отсутствует в пространстве имен.If namespace is omitted, the resource class is not contained in a namespace.

classnameclassname
Имя класса ресурсов со строгой типизацией.The name of the strongly typed resource class. Это имя должно совпадать с корневым именем RESOURCES-файла.This should correspond to the root name of the .resources file. Например, если программа Resgen.exe создает в RESOURCES-файл с именем "MyCompany.Libraries.Strings.resources", то именем класса ресурсов со строгой типизацией будет "String".For example, if Resgen.exe generates a .resources file named MyCompany.Libraries.Strings.resources, the name of the strongly typed resource class is Strings. Если параметр classname не задан, созданный класс является производным от корневого имени файла outputFilename.If classname is omitted, the generated class is derived from the root name of outputFilename. Если параметр outputFilename не задан, созданный класс является производным от корневого имени файла inputFilename.If outputFilename is omitted, the generated class is derived from the root name of inputFilename.

Имя classname не должно содержать недопустимые символы, например пробелы.classname cannot contain invalid characters such as embedded spaces. Если имя classname содержит пробелы или имя classname создается по умолчанию на основе inputFilename, и inputFilename содержит пробелы, программа Resgen.exe заменяет недопустимые символы на символ подчеркивания ().If classname contains embedded spaces, or if classname is generated by default from inputFilename, and inputFilename contains embedded spaces, Resgen.exe replaces all invalid characters with an underscore ().

filenamefilename
Имя файла класса.The name of the class file.

/publicclass
Делает класс ресурса со строгой типизацией открытым, а не internal (в C#) или Friend (в Visual Basic).Makes the strongly typed resource class public rather than internal (in C#) or Friend (in Visual Basic). С помощью такого решения можно оценивать ресурсы за пределами сборки, в которую они внедрены.This allows the resources to be accessed from outside the assembly in which they are embedded.

Важно!

При создании класса ресурсов со строгой типизацией имя RESOURCES-файла должно совпадать с именем пространства имен и класса для созданного кода.When you create a strongly typed resource class, the name of your .resources file must match the namespace and class name of the generated code. Однако программа Resgen.exe позволяет задавать параметры, которые приводят к созданию RESOURCES-файла с несовместимым именем.However, Resgen.exe allows you to specify options that produce a .resources file that has an incompatible name. Для временного решения этой проблемы переименуйте выходной файл после его создания.To work around this behavior, rename the output file after it has been generated.

Класс ресурсов со строгой типизацией включает в себя следующие элементы.The strongly typed resource class has the following members:

  • Конструктор без параметров, который можно использовать создания экземпляра класс ресурсов со строгой типизацией.A parameterless constructor, which can be used to instantiate the strongly typed resource class..

  • Свойство static (C#) или Shared (Visual Basic) и свойство ResourceManager только для чтения, которое возвращает экземпляр ResourceManager, который управляет ресурсом со строгой типизацией.A static (C#) or Shared (Visual Basic) and read-only ResourceManager property, which returns the ResourceManager instance that manages the strongly typed resource.

  • Статическое свойство Culture, с помощью которого можно задать язык и региональные параметры, используемые для извлечения ресурсов.A static Culture property, which allows you to set the culture used for resource retrieval. По умолчанию его значение равно null, то есть для пользовательского интерфейса используются текущий язык и региональные параметры.By default, its value is null, which means that the current UI culture is used.

  • Одно свойство static (C#) или Shared (Visual Basic) и свойство только для чтения для каждого ресурса в RESOURCES-файле.One static (C#) or Shared (Visual Basic) and read-only property for each resource in the .resources file. Имя свойства является именем ресурса.The name of the property is the name of the resource.-

Например, при выполнении следующей команды выполняется компиляция файла ресурсов с именем "StringResources.txt" в "StringResources.resources" и создается класс с именем StringResources в файле исходного кода Visual Basic с именем "StringResources.vb", который можно использовать для доступа к диспетчеру ресурсов.For example, the following command compiles a resource file named StringResources.txt into StringResources.resources and generates a class named StringResources in a Visual Basic source code file named StringResources.vb that can be used to access the Resource Manager.

resgen StringResources.txt /str:vb,,StringResources   

См. такжеSee also