日期:2009-01-19  浏览次数:20612 次

资源文件生成器 (Resgen.exe)
资源文件生成器将 .txt 文件和 .resx(基于 XML 的资源格式)文件转换为公共语言运行库二进制 .resources 文件,该文件可嵌入运行库二进制可执行文件或编译成附属程序集。  Resgen.exe 执行下列转换:

•    将 .txt 文件转换为 .resources 文件或 .resx 文件。
•    将 .resources 文件转换为文本文件或 .resx 文件。
•    将 .resx 文件转换为文本文件或 .resources 文件。
语法
resgen filename.extension [outputFilename.extension]

参数
说明

filename.extension
要转换的输入文件的名称。 extension 必须是下列值之一:
.txt
指定要转换为 .resources 文件或 .resx 文件的文本文件的扩展名。 文本文件只能包含字符串资源。
.resx
指定要转换为 .resources 文件或 .txt 文件的基于 XML 的资源文件的扩展名。
.resources
指定要转换为 .resx 文件或 .txt 文件的资源文件的扩展名。

outputFilename.extension
要创建的资源文件的名称。
从 .txt 文件或 .resx 文件转换时,该参数是可选的。 将文本文件或 .resx 文件转换为 .resources 文件时,可以指定 .resources 扩展名。  如果不指定 outputFilename,Resgen.exe 将在输入 filename 参数中追加一个 .resources 扩展名并将该文件写入包含 filename 的目录。
从 .resources 文件转换时,outputFilename 参数是强制的。 将 .resources 文件转换为基于 XML 的 .resources 文件时,请指定 .resx 扩展名。 将 .resources 文件转换为文本文件时,请指定 .txt 扩展名。 只有当 .resources 文件仅包含字符串值时,才应将 .resources 文件转换为 .txt 文件。


备注
Resgen.exe 通过包装由下列四类实现的方法来转换文件:
•    ResourceReader Class读取 .resources 文件。
•    ResourceWriter Class从指定的资源创建 .resources 文件。
•    ResXResourceReader Class读取 .resx 文件。
•    ResXResourceWriter Class从指定的资源创建 .resx 文件。
请注意,ResXResourceWriter 创建的 .resx 文件不能直接由 .NET 应用程序使用。 在将该文件添加到应用程序之前,通过 Resgen.exe 运行该文件以将其转换为 .resources 文件。 有关在代码中实现这些类的更多信息,请参阅他们各自的参考主题。
为了使 Resgen.exe 能够分析输入,.txt 文件和 .resx 文件遵循正确的格式是非常关键的。
文本文件只能包含字符串资源。 如果正在编写的应用程序必须将字符串翻译成若干种语言,则字符串资源很有用。  例如,通过使用适当的字符串资源,可以很容易地本地化菜单字符串。  Resgen.exe 读取包含名称/值对的文本文件,其中名称是描述资源的字符串,值是资源字符串本身。  必须在每行上分别指定每个名称/值对,如下例所示:
name=value
Resgen.exe 检查文本文件中是否有重复的资源名。 有关文本文件格式的更多详细信息,请参阅Creating and Using Resources。
.resx 资源文件格式由 XML 项组成。 与 .txt 文件相似,可以在这些 XML 项中指定资源。 与 .txt 文件相比,.resx 文件的主要优势在于还可以指定或嵌入对象。 查看 .resx 文件时,如果嵌入对象(如图片)的二进制格式是资源清单的一部分,则可以实际看见此二进制信息。 与 .txt 文件一样,可以用文本编辑器(如记事本或 Microsoft word)打开 .resx 文件,并且写入、粘贴和操作其内容。 注意:要完成这一步,必须非常熟悉 XML 标签和 .resx 文件结构。 有关 .resx 文件格式的更多详细信息,请参阅Creating and Using Resources。
要创建包含嵌入的非字符串对象的 .resources 文件,必须使用由ResourceWriter Class提供的方法,或者通过 Resgen.exe 转换包含对象的 .resx 文件,或者直接从代码将对象资源添加到文件。 如果通过 Resgen.exe 将包含对象的 .resources 文件转换为 .txt 文件,则所有字符串资源都将正确转换,但非字符串对象的数据类型也将作为字符串写入该文件。  在转换过程中将丢失嵌入的对象,并且 Resgen.exe 在检索资源时将报告有错误发生。
用 Resgen.exe 创建完 .resources 文件后,使用Assembly Generation Tool (Al.exe)将资源嵌入运行库二进制可执行文件或者将其编译为附属程序集。
示例
当未指定选项时,下列命令显示 Resgen.exe 的命令语法和选项。
resgen
下列命令读取 myResources.txt 中的名称/值对并编写一个名为 myResources.resources 的二进制资源文件。因为输出文件名未显式指定,默认情况下它接收与输入文件相同的名称。
resgen myResources.txt
下列命令读取 myResources.txt 中的名称/值对并编写一个名为 yourResources.resources 的二进制资源文件。
resgen myResources.txt yourResources.resources
下列命令读取基于 XML 的输入文件 myResources.resx 并编写一个名为 myResources.resources 的二进制资源文件。
resgen myResources.resx myResources.resources
下列命令读取二进制资源文件 myResources.resources 并编写一个名为 myResources.resx 的基于 XML 的输出文件。
resgen myResources.resources myResources.resx
下列命令读取基于 XML 的输入文件 myResources.resx 并编写一个名为 myResources.txt 的 .txt 文件。注意:如果 .resx 文件包含任何嵌入的对象,它们将不能正确地转换为 .txt 文件。
resgen myResources.resx myResources.txt

请参见
.NET Framework Tools | Creating and Using Resources | Deploying Resource FilesDesigning Global ApplicationsAssembly Generation Tool (Al.exe)