svcutil.exe 是 xsd.exe 的替代品吗?

2024-01-03

我正在使用 xsd.exe 从 .xsd 文件生成一些 C# 类。我遇到了此处和其他网站上介绍的相同问题,其中 xsd.exe 生成 Type[] 数组,而不是 .xsd 文件中类型的通用列表集合。有些人建议,如果将 /dataContractOnly 参数传递给 svcutil.exe,则可以使用 svcutil.exe 来替代 xsd.exe。然而,这些人似乎错了,因为 svcutil.exe 实际上生成 System.Xml.XmlNode[] 数组属性,而不是根据 .xsd 文件中的架构创建类型。

例如,给定这个简单的 .xsd 架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
    <xs:complexType name="Employee">
        <xs:all>
            <xs:element name="FirstName" type="xs:string"></xs:element>
            <xs:element name="LastName" type="xs:string"></xs:element>
        </xs:all>
    </xs:complexType>

    <xs:element name="Employees">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
                <xs:element name="Employee" type="Employee"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

'xsd.exe /classes Example.xsd' 生成:

public partial class Employees {

    private Employee[] employeeField;

    public Employee[] Employee {
        get { return this.employeeField; }
        set { this.employeeField = value; }
    }
}

public partial class Employee {

    private string firstNameField;

    private string lastNameField;

    public string FirstName {
        get { return this.firstNameField; }
        set { this.firstNameField = value; }
    }

    public string LastName {
        get { return this.lastNameField; }
        set { this.lastNameField = value; }
    }
}

'svcutil.exe /target:code /dataContractOnly /serializer:XmlSerializer /importXmlTypes /collectionType:System.Collections.Generic.List`1 Example.xsd' 生成:

public partial class Employee : object, System.Runtime.Serialization.IExtensibleDataObject{

    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

    private string FirstNameField;

    private string LastNameField;

    public System.Runtime.Serialization.ExtensionDataObject ExtensionData{
        get{ return this.extensionDataField; }
        set{ this.extensionDataField = value; }
    }

    public string FirstName{
        get{ return this.FirstNameField; }
        set{ this.FirstNameField = value; }
    }

    public string LastName{
        get{ return this.LastNameField; }
        set{ this.LastNameField = value; }
    }
}

public partial class Employees : object, System.Xml.Serialization.IXmlSerializable{

    private System.Xml.XmlNode[] nodesField;

    private static System.Xml.XmlQualifiedName typeName = new System.Xml.XmlQualifiedName("Employees", "http://tempuri.org/XMLSchema.xsd");

    public System.Xml.XmlNode[] Nodes{
        get{ return this.nodesField; }
        set{ this.nodesField = value; }
    }

    public void ReadXml(System.Xml.XmlReader reader){
        this.nodesField = System.Runtime.Serialization.XmlSerializableServices.ReadNodes(reader);
    }

    public void WriteXml(System.Xml.XmlWriter writer){
        System.Runtime.Serialization.XmlSerializableServices.WriteNodes(writer, this.Nodes);
    }

    public System.Xml.Schema.XmlSchema GetSchema(){
        return null;
    }

    public static System.Xml.XmlQualifiedName ExportSchema(System.Xml.Schema.XmlSchemaSet schemas){
        System.Runtime.Serialization.XmlSerializableServices.AddDefaultSchema(schemas, typeName);
        return typeName;
    }
}
  1. svcutil.exe 真的应该替代 xsd.exe 吗?生成的输出似乎完全不同。

  2. 此时,看起来我必须使用 xsd.exe 从 .xsd 文件创建类,然后手动调整代码以使其达到我想要的形式。我意识到使用纯粹生成的代码是理想的,但我想知道其他人是否使用 xsd.exe 作为起点,然后从那里开始工作,或者我是否需要完全考虑另一种方法?

  3. Visual Studio 2010 中的 xsd.exe 有任何更新吗?


Yes, svcutil.exe can用作替代品xsd.exe但听起来您在生成通用集合时遇到了困难。svcutil.exe has a collectionType允许您指定用于集合的类型的开关:

svcutil /o:Svc.cs /ct:System.Collections.Generic.List`1 http://example.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

svcutil.exe 是 xsd.exe 的替代品吗? 的相关文章

  • 在 Web 浏览器中禁用 F5 [重复]

    这个问题在这里已经有答案了 可能的重复 禁用浏览器的后退按钮 https stackoverflow com questions 961188 disable browsers back button 如何禁用浏览器上的 F5 刷新 htt
  • std::list::clear 是否会使 std::list::end 迭代器无效?

    检查这个代码 include stdafx h include
  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • 如何调整 Windows 窗体以适应任何屏幕分辨率?

    我知道这是重复的问题 但我检查了所有其他相关问题 他们的答案没有帮助 结果仍然与屏幕截图 2 中所示相同 我是 C Windows 窗体新手 如截图1所示 我有Form1有一些控件 每组控件都放在一个面板中 我在 PC1 中设计了应用程序
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • 测验;这个编译了吗?如果是的话它会返回什么(我知道答案)

    我最近发现这个错字 if name find string npos 显然开发者的意思是输入 if name find string npos 但令我惊讶的是发现错误甚至编译 Wall Werror 没有尝试过 pedantic 那么 咖啡
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include
  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • 如何在 Razor 编辑视图中显示选中的单选按钮 Asp net core mvc

    尽管 Razor 视图中的 Asp 网络核心代码 model List

随机推荐

  • Chrome 80如何解码cookie

    我有一个用于打开和解密 Google Chrome cookie 的工作脚本 如下所示 decrypted win32crypt CryptUnprotectData enctypted cookie value None None Non
  • Facebook SDK 4.x 权限问题 iOS

    我想得到Feed用于登录用户的时间线 我有一个登录按钮 我向其传递读取权限 包括user posts 令人惊讶的是 Facebook 没有授予我此权限并且忽略了它 Code void viewDidLoad super viewDidLoa
  • Powershell计划任务“延迟任务”选项

    我需要使用 延迟任务 选项创建任务计划 1 分钟 我可以看到 PowerShell cmdlet New ScheduledTaskTrigger 有一个选项 RandomDelay 但我认为它无效 我在文档中也看不到其他选项 https
  • Android Javascript WebView

    我有一个应用程序 我的最小 API 是 16 我想在 Web 视图上评估一些 javascript 当我有 mWebView evaluateJavascript function 我收到一个编译错误 说这仅在 API 19 及更高版本中可
  • 如何在Jqgrid中显示间接数据

    我正在我的 ASP net MVC Web 应用程序中实现 Jqgrid 我有这样的数据 SID SNAME CITY 1 ABC 11 2 XYZ 12 3 ACX 13 4 KHG 14 5 ADF 15 6 KKR 16 和另一张桌子
  • 无法使用 getRef() 吗?

    谁能解释为什么这说我不能使用 getRef 来获取被单击的位置 从我查到的所有内容来看 这应该有效 但由于某种原因却无效 public class DeleteChoiceListFragment extends Fragment Data
  • Firebase:我可以使用 Facebook 的新 Account Kit 对应用用户进行身份验证吗?

    脸书刚刚推出账户套件 https developers facebook com products account kit2016年F8 它使应用程序用户可以使用电话号码或电子邮件地址登录 我已经尝试使用它返回的访问令牌来通过 Fireba
  • 如何设置调色板,使其从最暗的颜色开始,其中旧数据比当前数据浅

    我正在绘制相关散点图 其中我的数据框包含时间数据 并且起始年份是任意的 在这种情况下 现在我有以下内容R code Set seed for randomness in dummy data set seed 123 Create data
  • Hibernate、iBatis、Java EE 或其他 Java ORM 工具

    我们正在规划一个大型企业应用程序 在经历了 J2EE 的痛苦之后 我们将重点放在评估 hibernate 上 看起来新的 Java EE API 更简单 我还阅读了一些有关 Hibernate 和 iBatis 的好文章 我们的团队对任何框
  • 如何在最小代码中使用 jquery 在 IE6 的 div 上启用悬停?

    我只想在单个 div 上实现悬停 对于 IE 6 jquery 中最简单 最轻量的解决方案是什么 div class hoverforie div 我将在 IE 条件注释中添加此脚本 提前致谢 Use hover http docs jqu
  • 深色模式:useColorScheme() 在 Android 上始终返回光

    我正在尝试让深色模式正常工作 但它在 Android 上不起作用 它总是返回 光 在 iOS 上它运行良好 import React from react import useColorScheme from react native ex
  • 相对布局和高度百分比。无法使用layout_below和layout_weight

    我对相对布局有一个问题 它的子级可以使用layout below 和layout weight 来设置其百分比高度 例如 我们有一个相对布局 其中有三个带有文本视图的线性布局 现在 我想为其中三个 线性布局 设置相对布局总高度的 25 50
  • 从文本文件 PHP 登录

    您好 我看过有关此问题的其他帖子 但它们已经有 2 岁或以上的历史了 所以我认为最好重新开始 正如标题所示 我正在尝试使用 php 制作一个登录页面 用户应该能够登录到特殊的会员专用页面 用户名和密码存储在一个文本文件中 注意这是一个作业
  • 如何在 swift 中将 sockaddr 转换为 sockaddr_in

    var sa tab sockaddr sockaddr repeating sockaddr count Int RTAX MAX let addr sockaddr sa tab Int RTAX DST let addr in soc
  • 在Android SDK中访问麦克风

    有没有什么方法可以访问 Android 手机中的麦克风 类似于访问android hardware Camera 我知道我们可以使用媒体记录器将 Android 应用程序中的音频录制到文件中 如下所示link http developer
  • 转义 URL 参数语句 if else switch

    这段代码有一个小问题 function getParameters var searchString document getElementById input1 value params searchString split hash i
  • 可编辑的 UITableView,每个单元格上都有一个文本字段

    我是 iOS 世界的新手 我想知道如何制作一个UITableView具有自定义单元格 其外观和行为类似于您尝试在设备上配置某些 WiFi 连接时所拥有的单元格 你知道UITableView细胞含有UITextField带有蓝色字体 您可以在
  • 如何将 ascii 流绑定到准备好的语句

    我正在测试快速加载示例代码Teradata 官方网站 http developer teradata com doc connectivity jdbc reference current samp T20208JD java txt 为了
  • unity 如何使用单个操纵杆控制摄像机视图?

    有谁知道如何仅用一个操纵杆控制摄像机视图 目前我使用的是开关的操纵杆 这是我当前的代码 public class MoveCamera MonoBehaviour public float speed 1 0f Camera cameraM
  • svcutil.exe 是 xsd.exe 的替代品吗?

    我正在使用 xsd exe 从 xsd 文件生成一些 C 类 我遇到了此处和其他网站上介绍的相同问题 其中 xsd exe 生成 Type 数组 而不是 xsd 文件中类型的通用列表集合 有些人建议 如果将 dataContractOnly