有没有人遇到过Svcutil和/ dconly选项的问题,它会为程序集中的每种数据类型生成元数据,即使它没有用[DataContract()]属性标记?它似乎也只为代码中引用的类型生成元数据,例如XmlDictionaryReaderQuotas,即使它们不是我生成元数据的物理程序集的一部分。
一些信息: 使用.NET 4.0版本的SvcUtil。 如果班级是空的也没关系。 没有在SvcUtil的命令行中指定引用。
命令行:
“C:\正在进行的工作(前瞻性)\前瞻性服务器\前瞻性服务器\管理\前景。服务器.Server.NET40.Debug.AnyCPU.dll”/ / nologo / t:metadata / d:“C:\ In进度工作(前瞻性)\前瞻性服务器\前瞻性服务器\管理“/ dconly
答案 0 :(得分:0)
解决方法是明确指定要使用的XSD。在我的情况下,仍然足以溢出命令行的字符限制;相反,我编写了一些删除所有额外XSD的代码,并继续在SvcUtil命令中使用* .xsd。但是,这可能很棘手,因为它需要详细了解程序集中每个 WCF 命名空间。
我已向Microsoft提交了错误报告,因为此行为未在其任何公开文档中定义为正确。您可以在此处查看错误报告并对其进行投票:http://connect.microsoft.com/wcf/feedback/details/641777/svcuil-with-datacontractonly-generates-xsds-for-all-types-in-assembly-regardless-of-datacontract-attributes