xsd.exe生成的C#文件能否包含Schema版本信息?
如何让xsd.exe生成的C#文件带上Schema版本信息
xsd.exe本身没有原生支持把Schema里的version属性自动加到生成的C#代码里,但有两种实用方法可以实现你的需求:
方法1:生成后手动补充(简单直接)
用xsd.exe生成完C#类文件后,直接在根类上添加注释或者自定义属性:
- 加注释的示例:
/// <summary> /// 对应Schema版本:1.0.2 /// </summary> [XmlRoot(Namespace = "你的命名空间", IsNullable = false)] public partial class YourRootClass { // 自动生成的类内容 }
- 加自定义属性字段的示例(用
XmlIgnore避免序列化时输出):
[XmlIgnore] public string SchemaVersion => "1.0.2";
如果是partial类,建议把这些自定义内容放到单独的非自动生成partial文件里,这样下次重新生成代码时不会被覆盖。
方法2:自动化注入(适合频繁生成场景)
如果需要每次生成都自动带上版本,得走两步:
- 写个简单脚本(PowerShell、Python都行),从Schema文件里提取
xs:schema节点的version值; - 用T4模板替代xsd.exe生成代码,在模板里把提取到的版本信息注入到注释或者类属性里。
这种方式能把版本注入做成自动化流程,不用每次手动改。
额外说明
xsd.exe的核心是生成符合XML序列化规则的C#类,它不会保留Schema的元数据(比如version这类属性),所以必须通过额外步骤来补充。如果你们有代码生成流水线,优先推荐T4模板的方式,能统一维护版本信息的注入。
内容的提问来源于stack exchange,提问作者struggling-to-work
相关产品推荐
相关产品推荐

