有一些XSD和WSDL。我想从它们生成C#代码。我使用了svcutil.exe,但它没有从XSD注释中生成XML注释:
<annotation>
<documentation>VERY USEFULL DOCUMENTATION</documentation>
</annotation>
我想在生成的文件中使用:
public class SomeData
{
/// <summary>
/// VERY USEFULL DOCUMENTATION
/// </summary>
public string SomeField
{...}
}
另一个问题:如何强制svcutil.exe为每个类生成一个文件? (我知道我可以使用Resharper的重构将类移到单独的文件中,但我不喜欢这个解决方案)
那么如何使用来自XSD和WSDL的XML注释生成多个文件(每个类一个文件)
答案 0 :(得分:4)
您可以使用WCFExtras + http://wcfextrasplus.codeplex.com/。
将此部分添加到客户端应用程序的app.config中,或放入新的配置文件并使用/ svcutilConfig开关调用svcutil
<configuration>
<system.serviceModel>
<client>
<metadata>
<wsdlImporters>
<extension type="WCFExtras.Wsdl.Documentation.XmlCommentsImporter, WCFExtras" />
</wsdlImporters>
</metadata>
</client>
</system.serviceModel>
</configuration>
示例命令行,其中configfile.xml是上面的配置文件: SvcUtil.exe [service url] / svcutilConfig:[configfile.xml的路径]
答案 1 :(得分:1)
我刚刚了解了xsd2Code visual studio插件。通过将Xsd注释/文档文本移动到c#xml文档摘要标记中,它可以完全满足您的需要。
CodePlex上有社区版。 paid version还有其他一些不错的高级功能,因此我决定支付45美元购买一年的许可证。注意:我不是公司的一员,只是满意的客户。
Scott Crowder
答案 2 :(得分:-1)
答案的基本部分是(目前)无法制作标准工具,例如 wsdl.exe 或 svcutil.exe(随 Windows SDK 一起提供)。您需要一个单独的工具来预处理生成的代理文件。
除了其他答案中的工具,如果您的服务定义具有 annotation
/documentation
元素,FancyWsdl 也可以在您的 C# 代码中创建适当的摘要标签:
FancyWsdl 对由 wsdl.exe
、svcutil.exe
或 Visual Studio > 添加服务引用 等工具生成的 WSDL 服务定义的 C# 代理代码进行后处理,并引入以下增强功能:
wsdl.exe https://example.com/ExampleService/?wsdl
svcutil.exe https://example.com/ExampleService/?wsdl
fancywsdl.exe ExampleService.cs https://example.com/ExampleService/?wsdl https://example.com/ExampleData.xsd