Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# xsd2code多个xsd文件创建重复的子类_C#_Xsd_Xsd2code - Fatal编程技术网

C# xsd2code多个xsd文件创建重复的子类

C# xsd2code多个xsd文件创建重复的子类,c#,xsd,xsd2code,C#,Xsd,Xsd2code,我使用XSD2代码从star标准提供的xsd模式生成类 我确实尝试使用xsd.exe生成类,但效果不好 当我从“ProcessCreditApplication.xsd”生成类时,它会生成一个包含所有所需类的文件。在这一点上一切正常 当我生成另一个xsd时,ConfirmBOD.xsd会出现歧义错误,因为两个文件都包含相同的基类 例如,两个文件都生成一个“Description”类。因为两个文件都在同一个名称空间中,所以同一名称空间中的两个类之间存在歧义 有没有办法从多个xsd生成类,这样子类就

我使用XSD2代码从star标准提供的xsd模式生成类

我确实尝试使用xsd.exe生成类,但效果不好

当我从“ProcessCreditApplication.xsd”生成类时,它会生成一个包含所有所需类的文件。在这一点上一切正常

当我生成另一个xsd时,ConfirmBOD.xsd会出现歧义错误,因为两个文件都包含相同的基类

例如,两个文件都生成一个“Description”类。因为两个文件都在同一个名称空间中,所以同一名称空间中的两个类之间存在歧义

有没有办法从多个xsd生成类,这样子类就不会重复

我唯一想解决这个问题的方法是将每个生成的文件放在自己的名称空间中。这并不理想,但有效

我想使用xsd.exe,因为它似乎可以获取多个文件,但它生成的代码不能满足我的需要

更新 我尝试了Linq到xsd,但没有成功。它抱怨说,相同的类型已经“被声明”

供参考:以下是我获取模式的位置:


我在使用xsd.exe时也遇到了问题。我已经成功地使用微软的LinqToXsd项目从XSD文件生成C#代码。我还没有尝试过使用极其复杂的XSD文件,但您可以试一试

LinqToXsd项目在上是开源的

命令行用法语法为:

LinqToXsd <schemaFile> [one or more schema files] [/fileName:<csFileName>.cs] [/lib:<assemblyName>] [/config:<configFileName>.xml] [/enableServiceReference] [/nameMangler2]
LinqToXsd[一个或多个架构文件]/fileName:.cs][/lib:][/config:.xml][/enableServiceReference][/nameMangler2]

我认为实际上只有两种选择:

  • 为每个生成的文件使用不同的命名空间
  • 为所有类型指定唯一的名称(可能不适合您的情况)

  • 仔细想想,每个生成的文件实际上是一组类,而不仅仅是一个类,因此为每个文件指定自己的名称空间是有意义的。

    您可以使用一个额外的XML文件来配置LinqToXsd名称空间

    例如

    
    
    与Visual Studio平滑集成的其他详细信息

    在与XSD相同的解决方案中创建一个XML文件,并将其命名为linq2xdconfig.XML

    选择linq2xdconfig.xml的生成操作,以:LinqToXsdConfiguration

    您还可以将相同的XML文件传递到
    LinqToXsd.exe
    ,如所述

    LinqToXsd/config:linq2xdconfig.xml
    
    现在有了“排除包含的类型”复选框,因此应该不再有问题。

    仅适用于导入的架构,而不包括(community edition-v3.4.0.38968)
    LinqToXsd <schemaFile> /config:linq2xsdconfig.xml