【发布时间】:2011-09-08 00:20:32
【问题描述】:
我想生成一个序列化程序集或 .cs 文件以使用 XmlAttributeOverrides 序列化我的类型,然后在我的项目中直接引用此程序集/.cs 文件,而不是使用 XmlSerializer 执行 xml 序列化/反序列化。这是因为序列化使用 XmlAttributeOverrides,并且当您创建具有覆盖的 XmlSerializer 时,它不会查找现有程序集,而是始终重新生成一个程序集 (reference)。我的程序在无法运行 csc.exe 的环境中运行,因此我无法在运行时生成序列化程序集。
需要明确的是,我不能只使用 sgen.exe,因为它只会生成执行默认 xml 序列化/反序列化的程序集。如果您创建一个 XmlSerializer 和 pass it XmlAttributeOverrides in the constructor 然后 Serialize() 和 Deserialize() 不使用由 sgen.exe 生成的程序集,因此 sgen.exe 对我来说似乎没有用。当使用覆盖时,XmlSerializer 总是会生成一个新的程序集。
那么,有没有一种方法可以调用 XmlSerializer 或其他类并让它创建一个可以包含在我的项目中的 .cs 文件或 dll?如果可能的话,我想自动化这个过程,这样每当我更改正在序列化的类型时,我都不需要进行手动更改。我不能使用 sgen.exe /k 因为它只会为一种类型生成默认的 XmlSerializer 而不是我需要的使用覆盖的类型。还有其他方法可以生成或捕获由 XmlSerializer 创建的 .cs 文件吗?
(我有一个相关的问题here 这是这个问题的根源)
【问题讨论】:
标签: c# .net xml-serialization xmlserializer