【问题标题】:Anybody know of any T4 templates for generating classes from xsd?有人知道任何用于从 xsd 生成类的 T4 模板吗?
【发布时间】:2010-11-18 08:00:13
【问题描述】:

我正在查看一些更新从 xsds 生成的类的工作。我认为这将是 T4 模板的一个很好的用途,但我没有看到任何人这样做的例子。本质上,我想做Linq to XSD 所做的事情,但不在生产解决方案中包含 alpha 构建目标。

有相关链接吗?


现在是一个维基。在此处存储您的相关答案。

【问题讨论】:

    标签: .net xsd code-generation t4


    【解决方案1】:

    我目前正在使用 xsd2code.net,请在此处找到它:http://xsd2code.codeplex.com/。 好处多多:

    • 开源,因此您可以调整/破解它

    • 用列表甚至您自己的自定义集合类型替换数组

    • 从命令行运行,或作为 Visual Studio 插件运行(右键单击 xsd,告诉生成)

    我也喜欢您可以在单个 xsd 文件上运行它,并且如果找不到引用的 xsd 文件(就像 xsd.exe 一样),它也不会崩溃。因此很容易在单个文件上运行它,以防您只想对一个文件进行快速更新。

    但是,T4 也应该是一个选项,我刚刚搜索了 T4 XSD 并找到了一些解决方案。

    【讨论】:

    • 我认为这是目前最好的解决方案。一个更好的解决方案可能是从一开始就避免这种情况。
    • 对此进行更新:我目前正在审查这个项目-oxmlibrary.codeplex.com - 如果这有意义的话,这似乎有点骇人听闻,但更“可骇”。
    • 威尔,我又回来做这件事了。避免可能是最好的,但在 xsd 中定义了行业标准的情况下,从模式生成类是非常有效的操作。虽然不是很有趣。
    【解决方案2】:
    【解决方案3】:

    我发现 XSD 很难用作代码生成模型。它过于灵活和复杂,无法满足我的需求。强类型数据集设计器/生成器是尝试使用 XSD 作为代码生成模型的一个很好的例子。它在大多数情况下都可以正常工作,但不支持您可以扔给它的所有可能的模式。另一方面,XSD 不能表示直接生成表适配器所需的信息,因此必须创建特定于 DataSet 的扩展。

    如果您决定继续使用 XSD 作为模型,您可能希望选择一个简单的子集,足以满足您需要生成的内容。一种方法是将 XSD 模式加载到 DataSet 对象中,并将此 DataSet 对象用作模型。 DataSet 元数据比通用 XSD 更易于访问。这也将允许您使用 Visual Studio 中现有的 DataSet 设计器来编辑您的模型。

    【讨论】:

    • 代码生成适用于将保存反序列化 xml 的类。要么我构建自己的模型并将 xml 解析到其中,要么直接从 xml 反序列化对象。寻找一种比数据集更轻量级的解决方案...一种允许我为反序列化数据编写部分类的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2010-11-18
    • 1970-01-01
    • 2011-07-03
    • 2012-02-16
    • 2011-09-07
    相关资源
    最近更新 更多