<xsdcodegennamespacemappings>字符串属性如何工作?

时间:2017-06-02 16:11:37

标签: c# xml-serialization

我在.csproj项目文件中使用<PropertyGroup><XsdCodeGenEnabled>true</XsdCodeGenEnabled></PropertyGroup>为项目中的.xsd文件中定义的XML模式生成C#类。

我可以看到默认情况下这会在名为ContractTypes的命名空间中生成类,这是有效的,因为XsdCodeGen目标中的.targets文件将XsdCodeGenNamespaceMappings属性的值设置为<XsdCodeGenNamespaceMappings>*, ContractTypes</XsdCodeGenNamespaceMappings>,我可以设置属性以同样的方式替换我想要的命名空间&#39; ContractTypes&#39;

我遇到的问题是我想从不同命名空间中的多个 .xsd文件生成C#类型。我猜XsdCodeGenNamespaceMappings旨在解决这个问题,我可以看到它用于构建一个字典,它以某种方式查找要使用的输出命名空间。而且我不明白输入命名空间的来源(在.xsd文件中)。 (&#39; *&#39;是一个神奇的值。)

执行工作的XsdTypeImporterTask如何实际处理&#39; NamespaceMappings&#39;参数β

1 个答案:

答案 0 :(得分:0)

我在程序集中做了一些潜水,在我看来,对于 XmlSerializer 模式,XsdBuildTask支持的唯一“输入命名空间”值是*。并且,如果您处于 DataContractSerializer 模式,则构建任务使用名称空间映射字典与其他值的唯一方法。我很高兴听到我错了......