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

Jar*_*xle 4 wcf xsd wsdl comments annotations

有一些 XSD 和 WSDL。我想从它们生成 C# 代码。我使用了 svcutil.exe,但它不会从 XSD 注释生成 XML 注释:

<annotation>
    <documentation>VERY USEFULL DOCUMENTATION</documentation>
</annotation>
Run Code Online (Sandbox Code Playgroud)

我想要这个在生成的文件中:

public class SomeData
{
    /// <summary>
    /// VERY USEFULL DOCUMENTATION
    /// </summary>
    public string SomeField
    {...}
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:如何强制 svcutil.exe 为每个类生成一个文件?(我知道我可以使用 Resharper 的重构来将类移动到单独的文件中,但我不喜欢这个解决方案)

那么如何使用来自 XSD 和 WSDL 的 XML 注释生成多个文件(每个类一个文件)

oss*_*sek 6

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

  1. 使 WCFExtras.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>
    
    Run Code Online (Sandbox Code Playgroud)

示例命令行,其中 configfile.xml 是上面的配置文件:SvcUtil.exe [service url] /svcutilConfig:[path to configfile.xml]

  • 对于未来的读者:WCFExtras 命名空间已更改为 WFCExtrasPlus,其程序集名称也是如此。如果您使用的是完全限定名称,请确保使用正确的版本和公钥标记,您可以从库文档页面(或程序集本身)的注释中找到这些标记。主要文档已经很久没有更新了,并将现已过时的版本号称为公钥令牌 (4认同)