svcutil生成无法编译的客户端WCF服务绑定代码

时间:2011-06-03 17:49:13

标签: .net wcf wcf-binding

 [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
 [System.Runtime.Serialization.DataContractAttribute(Name="TreeTraversalType", Namespace="http://schemas.datacontract.org/2004/07/DsLib")]
public enum TreeTraversalType : int
{
    [System.Runtime.Serialization.EnumMemberAttribute()]
    PreOrder = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    InOrder = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    PostOrder = 2,
}

来自服务公开合同

  [OperationContract]
  void PrintTraversePath(TreeTraversalType type);

但在客户端,它表示Serialization不包含DataContractAttribute

此外,在编译服务之前,我得到了这个枚举的CLS不兼容错误,但后来没有任何相关的修改,它解决了(必须修改了一些我不知道的与此相关的东西)。

我的问题是,为什么这种编译错误行为以及什么是CLS合规性。我不能在Contract服务定义中使用枚举类型吗?

2 个答案:

答案 0 :(得分:1)

Enums在合同中工作正常。您是否在项目中引用了System.Runtime.Serialization.dll(其中定义了DataContractAttribute)?

答案 1 :(得分:1)

Runtime.Serialization命名空间可能缺少引用。

枚举不是问题。它们在数据合同中运作良好。