有人知道任何用于从 xsd 生成类的 T4 模板吗?

Posted

技术标签:

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

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

有相关链接吗?


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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

【讨论】:

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

给你: http://www.olegsych.com/2008/08/t4-xsd-directive/

【讨论】:

【参考方案3】:

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

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

【讨论】:

代码生成适用于将保存反序列化 xml 的类。要么我构建自己的模型并将 xml 解析到其中,要么直接从 xml 反序列化对象。寻找一种比数据集更轻量级的解决方案...一种允许我为反序列化数据编写部分类的解决方案。

以上是关于有人知道任何用于从 xsd 生成类的 T4 模板吗?的主要内容,如果未能解决你的问题,请参考以下文章

从XSD生成C#类的最佳工具是什么? [关闭]

从 JSON 模式生成 XML 模式 (XSD)

从 Visual Studio 中的类生成 XSD

如何从 PowerShell 脚本触发 T4 模板

无需任何配置即可生成实体代码的 T4 模板

T4模板:T4模板之菜鸟篇