【问题标题】:Scraping KnownType attributes during SvcUtil and WSDL Code generation在 SvcUtil 和 WSDL 代码生成期间抓取 KnownType 属性
【发布时间】:2019-01-16 05:33:51
【问题描述】:

我有一个带有用于元数据的 mex 端点的 WCF 服务。我通过 Visual Studio 使用 SvcUtil 在服务运行时生成客户端数据合同代码 (C#)。 SvcUtil 为继承和引用的类型添加 KnownType 属性。我有一个自定义数据合同解析器,对这些已知类型没有用处。如何使 SvcUtil 或 WSDL Importer 不使用 KnownType 属性标记所有这些类型?我最坏的情况是在代码生成后遍历文件并删除这些属性,但我希望有一种更简洁的方法来做到这一点。

【问题讨论】:

  • 您是否在 WCF 源代码中使用 ServiceKnownTypeAttribute
  • 是的,我在服务端使用ServiceKnownTypeAttribute
  • 通常情况下,我建议删除服务器端 ServiceKnownTypeAttributes。在这种情况下,我不确定这会产生什么影响。我在下面提供了一个替代解决方案。

标签: .net wcf wsdl svcutil.exe known-types


【解决方案1】:

一个选项是add the known types to a configuration file。配置文件不需要是您的 app.config(或 web.config)。可以叫dummy.config

运行svcutil.exe时,添加以下参数/svcutilConfig:dummy.config。生成客户端代码后,您的 KnownType 属性应该会消失。

这是registering known types using a configuration file.的另一个例子

【讨论】:

  • 谢谢。我试图从一代中删除已知的类型属性,同时仍保留声明的类型。从配置文件中,我可以清除声明的类型,但我无法清除已知类型,除非我手动编写每个声明的类型,然后清除它们各自的已知类型,这是不可行的。除非我在这里遗漏了什么......
  • 我实际上只是在考虑那部分。您必须手动创建(和维护)配置文件。一种选择是基于 WCF 元数据创建 T4 模板。这不是灵丹妙药,但我认为它回答了您最初的问题。
  • 您找到替代解决方案了吗?
  • 不幸的是,这不是一个优雅的。目前坚持在生成后清理代码。
猜你喜欢
  • 2020-09-22
  • 1970-01-01
  • 2011-05-17
  • 2023-03-04
  • 1970-01-01
  • 2014-05-06
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多