从Web服务生成两次相同的属性

时间:2013-11-15 21:57:36

标签: c# wcf

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

自动生成类的示例:

  

[System.CodeDom.Compiler.GeneratedCodeAttribute( “System.Runtime.Serialization”,   “4.0.0.0”)]       [System.Runtime.Serialization.DataContractAttribute(名称= “COUNTRYCODE”,   命名空间= “http://schemas.datacontract.org/2004/07/”)]       public enum CountryCode:int

     

[System.CodeDom.Compiler.GeneratedCodeAttribute( “的System.Xml”,   “4.0.30319.18408”)]       [System.SerializableAttribute()]       [System.Xml.Serialization.XmlTypeAttribute(命名空间= “http://schemas.datacontract.org/2004/07/”)]       public enum CountryCode

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

CS0101:名称空间“TAP”已包含“CountryCode”

的定义

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

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类型或在共享库中定义类型时,这会创建重复类型。 为避免此问题,默认情况下共享引用程序集中的类型。如果要为一个或多个程序集禁用类型共享,可以在“配置服务引用”对话框中执行此操作。 在单个程序集中禁用类型共享 在Solution Explorer中,选择服务引用。 在项目菜单上,单击配置服务引用。 在“配置服务引用”对话框中,选择“在指定的引用程序集中重用类型”。 选中要在其中启用类型共享的每个程序集的复选框。要禁用程序集的类型共享,请清除该复选框。 禁用所有程序集中的类型共享 在Solution Explorer中,选择服务引用。 在项目菜单上,单击配置服务引用。 在“配置服务引用”对话框中,清除“引用的程序集中的重用类型”复选框。

祝你好运!