基于XSD创建MULTIPLE类文件

时间:2011-07-11 18:31:02

标签: c# .net visual-studio-2010 xsd.exe

我可能正在尝试使用XSD工具无法实现的功能,但在转向更简单的解决方案之前我想问一下。

我有一个XSD文件,它有多个元素(和多个复杂类型),它们会在一个代码文件中生成多个类(我不喜欢这个)。为了从XSD工具生成干净且可读的类文件,我希望将每个元素放在一个单独的代码文件中,而不是将所有元素放在一个代码文件中作为部分类。

有谁知道怎么做?或者,我唯一的解决方案是将XSD分解为模式中每个xml元素的一个模式吗?

MSDN文章http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx未提供指定是否可以执行此操作的语言。

提前感谢您的任何答案或评论。

2 个答案:

答案 0 :(得分:13)

这不能直接回答你的问题,但我想抛出一些东西:

我通常发现分离生成的代码会产生反作用。我总是喜欢遵循“每个文件一个类”规则,但我在这里做了一个例外,因为我经常处理非常大的模式。即使在他们自己的目录中,我也不希望在生成新版本的代码时需要差异(到数百个)文件。我发现将所有生成的代码扩展到一个文件中非常方便。

现在,为了提供一个可能的解决方案 - Resharper能够从文件中提取所有类并将它们放在自己的文件中。如果右键单击解决方案资源管理器中的文件,则可以说 Refactor→Move types into matching files ... 。当然,这并不像以这种方式生成它那样方便,但我不知道会有这样的工具。

答案 1 :(得分:5)

我试图解决的问题是在单独的类文件中,或者是单个的,但是是唯一的类,而不是包含多个类的相同名称空间。因此,我一直在寻找类似的答案,并发现此分享Getting xsd.exe To Not Create Duplicate Classes

的参考

这是一个简单的修复,但我花了很长时间才弄明白。您必须使用xsd.exe一次编译所有类,因此您只需运行一个命令,而不是运行两个单独的命令: C:\ Solution \ Project> xsd.exe Types.xsd Request.xsd Response.xsd / c 现在你有一个文件Response.xsd,其中包含所有三个类。