如何使用WSDL和XSD中的注释生成.NET类

时间:2011-12-23 15:14:47

标签: wcf xsd annotations wsdl comments

有一些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注释生成多个文件(每个类一个文件)

3 个答案:

答案 0 :(得分:4)

您可以使用WCFExtras + http://wcfextrasplus.codeplex.com/

  1. 使WCFxtras.dll对svcutil.exe可见(例如将它们放在同一目录中)
  2. 将此部分添加到客户端应用程序的app.config中,或放入新的配置文件并使用/ svcutilConfig开关调用svcutil

     <configuration>
      <system.serviceModel>
        <client>
          <metadata>
            <wsdlImporters>
              <extension type="WCFExtras.Wsdl.Documentation.XmlCommentsImporter, WCFExtras" />
            </wsdlImporters>
          </metadata>
        </client>
      </system.serviceModel>
    </configuration>
    
  3. 示例命令行,其中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.exesvcutil.exeVisual Studio > 添加服务引用 等工具生成的 WSDL 服务定义的 C# 代理代码进行后处理,并引入以下增强功能:

  • 可以重命名类型和成员
  • 应用 C# 命名约定 (PascalCase)
  • 插入文档(摘要标签)
  • 清理代码
  1. 从 WSDL 文件生成 C# 代理类,例如
    • wsdl.exe https://example.com/ExampleService/?wsdl
    • svcutil.exe https://example.com/ExampleService/?wsdl
    • Visual Studio > 添加服务引用
  2. 在生成的代码上运行FancyWsdl传递服务定义
    例如fancywsdl.exe ExampleService.cs https://example.com/ExampleService/?wsdl https://example.com/ExampleData.xsd