XML 序列化程序生成器工具 (Sgen.exe)
XML 序列化程序生成器创建指定程序集中的类型的 XML 序列化程序集。 序列化程序集在序列化或反序列化指定类型的对象时,将改进 XmlSerializer 的启动性能。
注意
此工具特定于 .NET Framework 程序集。 要为 .NET (Core) 程序集生成 XML 序列化程序,请参阅在 .NET Core 上使用 Microsoft XML 序列化程序生成器。
语法
从命令行运行该工具。
sgen [options]
提示
要使 .NET Framework 工具正常工作,必须使用 Visual Studio 开发人员命令提示或 Visual Studio 开发人员 PowerShell,或者正确设置 Path
、Include
和 Lib
环境变量。 可以通过运行 SDKVars.bat(位于 <SDK>\<version>\Bin 目录中)来设置这些环境变量。
参数
选项 | 说明 |
---|---|
/a[ssembly]:filename | 为由 filename 指定的程序集或可执行文件中包含的所有类型生成序列化代码。 只能提供一个文件名。 如果该参数重复,将使用最后一个文件名。 |
/c[ompiler]:options | 指定要传递给 C# 编译器的选项。 支持所有传递到编译器的 csc.exe 选项。 这可用于指定应该对程序集进行签名,以及用于指定密钥文件。 |
/d[ebug] | 生成一个可用于调试器的映像。 |
/f[orce] | 强制覆盖同名的现有程序集。 默认值为 false。 |
或 | 显示该工具的命令语法和选项。 |
/k[eep] | 取消在生成的源文件和其他临时文件编译到序列化程序集内之后对它们的删除操作。 这可用于确定工具是否正在为某个特定类型生成序列化代码。 |
/n[ologo] | 取消显示 Microsoft 启动版权标志。 |
/o[ut]:path | 指定要在其中保存生成的程序集的目录。 注意:生成的程序集的名称由输入程序集的名称加上 "xmlSerializers.dll" 组成。 |
/p[roxytypes] | 仅生成 XML Web services 代理类型的序列化代码。 |
/r[eference]:assemblyfiles | 指定由需要 XML 序列化的类型引用的程序集。 接受多个程序集文件(由逗号分隔)。 |
/s[ilent] | 取消显示成功消息。 |
/t[ype]:type | 仅生成指定类型的序列化代码。 |
/v[erbose] | 显示详细输出,以进行调试。 列出目标程序集中无法使用 XmlSerializer 进行序列化的类型。 |
/? | 显示该工具的命令语法和选项。 |
注解
不使用 XML 序列化程序生成器时,XmlSerializer 在应用程序每次运行时为每个类型生成序列化代码和一个序列化程序集。 若要改进 XML 序列化的启动性能,请预先使用 Sgen.exe 工具生成那些程序集。 然后可以使用应用程序部署这些程序集。
XML 序列化程序生成器还可以改进使用 XML Web 服务代理与服务器通信的客户端的性能,因为在第一次加载类型时,序列化进程将不会导致性能受损。
生成的程序集无法在 Web 服务的服务器端使用。 该工具仅能用于 Web 服务客户端和手动序列化方案。
注意
sgen
工具与仅限 init 的资源库不兼容。 如果目标程序集包含使用此功能的任何公共属性,该工具将失败。
命名
如果包含要序列化的类型的程序集名为 MyType.dll,则关联的序列化程序集的名称将为 MyType.XmlSerializers.dll。
示例
下面的命令创建一个名为 Data.XmlSerializers.dll 的程序集,用于序列化名为 Data.dll 的程序集中包含的所有类型。
sgen Data.dll
可以从代码中引用需要序列化和反序列化 Data.dll 中的类型的 Data.XmlSerializers.dll 程序集。