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

6
我正在研究更新从xsds生成的类的工作。我认为这将是T4模板的一个很好的应用,但我没有看到任何人做过这个的例子。本质上,我想做Linq to XSD所做的事情,但不包括在生产解决方案中包含alpha构建目标。
有相关链接吗?
现在是一个维基。在这里存储您相关的答案。
3个回答

3
我目前正在使用xsd2code.net,可以在这里找到:http://xsd2code.codeplex.com/。有很多好处:
  • 开源,因此您可以进行调整/修改

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

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

我还喜欢它可以在单个xsd文件上运行,如果找不到引用的xsd文件(就像xsd.exe一样),它也不会崩溃。因此,如果您只想快速更新一个文件,则可以轻松地在单个文件上运行它。

然而,T4也应该是一个选择,我刚刚搜索了T4 XSD,并找到了一些解决方案来讨论这个问题。


我认为这是目前最好的解决方案。更好的解决方案可能是避免一开始出现这种情况。 - user1228
更新一下:我目前正在审查这个项目 - http://oxmlibrary.codeplex.com/ - 它似乎有点粗糙,但如果这样说更“可操作”。 - Brady Moritz
威尔,我又回来做这件事了。避免可能是最好的选择,但在已经定义了XSD行业标准的情况下,从模式生成类是一个非常有效的操作。虽然不太有趣。 - Brady Moritz

2

1

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

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


代码生成是为了创建将反序列化XML的类。我可以构建自己的模型并将XML解析到它们中,或者直接从XML反序列化对象。寻找比数据集更轻量级的解决方案...允许我编写反序列化数据的部分类。 - user1228

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接