【问题标题】:Same property being generated twice from web service从 Web 服务生成两次相同的属性
【发布时间】:2013-11-29 10:49:36
【问题描述】:

我正在连接到网络服务。生成类时,它会创建两个相同的属性,一个具有“System.Xml”的 System.CodeDom.Compiler.GeneratedCodeAttribute 属性,另一个具有“System.Runtime.Serialization”的 System.CodeDom.Compiler.GeneratedCodeAttribute 属性”。

自动生成类的示例:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="CountryCode", 命名空间="http://schemas.datacontract.org/2004/07/")] 公共枚举 CountryCode : int

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18408")] [System.SerializableAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.datacontract.org/2004/07/")] 公共枚举国家代码

因此,解决方案无法编译并给我错误:

CS0101:命名空间“TAP”已包含“CountryCode”的定义

任何想法都将不胜感激。

【问题讨论】:

  • 如何连接到网络服务? Web服务相关代码是什么?

标签: c# wcf


【解决方案1】:

添加服务引用时,请确保选中“引用程序集中的重用类型”。以下链接应提供有关该主题的更多信息...

http://msdn.microsoft.com/en-us/library/vstudio/bb628653(v=vs.100).aspx

编辑:

以下文章可以让您更清楚地了解您所看到的...

http://msdn.microsoft.com/en-us/library/bb907578(v=vs.110).aspx

特别是以下信息...

将服务引用添加到项目时,服务中定义的任何类型都会在本地项目中生成。在许多情况下,当服务使用常见的 .NET Framework 类型或在共享库中定义类型时,这会创建重复类型。 为避免此问题,默认情况下,引用程序集中的类型是共享的。如果要禁用一个或多个程序集的类型共享,可以在“配置服务引用”对话框中执行此操作。 在单个程序集中禁用类型共享 在解决方案资源管理器中,选择服务引用。 在项目菜单上,单击配置服务引用。 在“配置服务引用”对话框中,选择“在指定的引用程序集中重用类型”。 选中要在其中启用类型共享的每个程序集的复选框。要禁用程序集的类型共享,请清除该复选框。 在所有程序集中禁用类型共享 在解决方案资源管理器中,选择服务引用。 在项目菜单上,单击配置服务引用。 在“配置服务引用”对话框中,清除“在引用的程序集中重用类型”复选框。

祝你好运!

【讨论】:

  • 更新了答案。如果有帮助,请告诉我。
猜你喜欢
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2021-07-21
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多