我有一个巨大的 WSDL,但我只需要其中的几个方法。
是否可以仅为这些方法生成 WCF 代理?
“完全实现”为我的 DLL 添加了 9 兆字节。
您可以手动构建数据协定和仅包含您感兴趣的操作的接口,然后将该接口与ChannelFactory一起使用来创建一个仅针对这些操作的基本客户端,或者...
...您还可以从您不需要的所有操作和元素中剥离 WSDL,并将结果提供给 svcutil.exe 以创建更简单的客户端。一种更安全的方法是将大型 WSDL 提供给 svcutil.exe 并从生成的代码中去除不需要的内容(这样更安全,因为如果您删除了不应该删除的内容,编译器会立即通知您)。
无论哪种方式,我认为您将不得不执行一些手动干预。
svcutil 有一个/excludeType
标志。它可以在元数据导出和类型生成期间使用。
从 svcutil 命令行帮助:
/excludeType: - 从导出或验证中排除的完全限定或程序集限定类型名称。导出服务或一组服务合同的元数据时可以使用此选项,以排除类型被导出。此选项不能与 /dataContractOnly 选项一起使用。(简称:/et)
如何使用 svcutil.exe 导出单个合同的元数据?用它来解决一个类似的问题。
我希望类型过滤对你有用,因为我不知道“开箱即用”的方法来做到这一点。