【发布时间】:2010-11-18 08:00:13
【问题描述】:
我正在查看一些更新从 xsds 生成的类的工作。我认为这将是 T4 模板的一个很好的用途,但我没有看到任何人这样做的例子。本质上,我想做Linq to XSD 所做的事情,但不在生产解决方案中包含 alpha 构建目标。
有相关链接吗?
现在是一个维基。在此处存储您的相关答案。
【问题讨论】:
标签: .net xsd code-generation t4
我正在查看一些更新从 xsds 生成的类的工作。我认为这将是 T4 模板的一个很好的用途,但我没有看到任何人这样做的例子。本质上,我想做Linq to XSD 所做的事情,但不在生产解决方案中包含 alpha 构建目标。
有相关链接吗?
现在是一个维基。在此处存储您的相关答案。
【问题讨论】:
标签: .net xsd code-generation t4
我目前正在使用 xsd2code.net,请在此处找到它:http://xsd2code.codeplex.com/。 好处多多:
开源,因此您可以调整/破解它
用列表甚至您自己的自定义集合类型替换数组
从命令行运行,或作为 Visual Studio 插件运行(右键单击 xsd,告诉生成)
我也喜欢您可以在单个 xsd 文件上运行它,并且如果找不到引用的 xsd 文件(就像 xsd.exe 一样),它也不会崩溃。因此很容易在单个文件上运行它,以防您只想对一个文件进行快速更新。
但是,T4 也应该是一个选项,我刚刚搜索了 T4 XSD 并找到了一些解决方案。
【讨论】:
我发现 XSD 很难用作代码生成模型。它过于灵活和复杂,无法满足我的需求。强类型数据集设计器/生成器是尝试使用 XSD 作为代码生成模型的一个很好的例子。它在大多数情况下都可以正常工作,但不支持您可以扔给它的所有可能的模式。另一方面,XSD 不能表示直接生成表适配器所需的信息,因此必须创建特定于 DataSet 的扩展。
如果您决定继续使用 XSD 作为模型,您可能希望选择一个简单的子集,足以满足您需要生成的内容。一种方法是将 XSD 模式加载到 DataSet 对象中,并将此 DataSet 对象用作模型。 DataSet 元数据比通用 XSD 更易于访问。这也将允许您使用 Visual Studio 中现有的 DataSet 设计器来编辑您的模型。
【讨论】: