向枚举添加标志后:Wcf错误:错误5自定义工具错误:无法为服务引用生成代码';MyService';

向枚举添加标志后:Wcf错误:错误5自定义工具错误:无法为服务引用生成代码';MyService';,wcf,enums,datacontract,flags,Wcf,Enums,Datacontract,Flags,在我的WCF服务上,我只需将枚举更改为: /// <summary> /// The DocumentState enum. /// </summary> [DataContract] public enum DocumentState { /// <summary> /// Undefined. /// </summary> [EnumMember] Undefined, /// <

在我的WCF服务上,我只需将枚举更改为:

    /// <summary>
/// The DocumentState enum.
/// </summary>
[DataContract]
public enum DocumentState
{
    /// <summary>
    /// Undefined.
    /// </summary>
    [EnumMember]
    Undefined,

    /// <summary>
    /// OK.
    /// </summary>
    [EnumMember]
    Ok
}
//
///DocumentState枚举。
/// 
[数据合同]
公共枚举文档状态
{
/// 
///未定义。
/// 
[委员]
未定义,
/// 
///嗯。
/// 
[委员]
好啊
}
致:

//
///DocumentState枚举。
/// 
[数据合同]
[旗帜]
公共枚举文档状态
{
/// 
///未定义。
/// 
[委员]
未定义=0,
/// 
///嗯。
/// 
[委员]
Ok=1
}
在客户端,我更新了WCF引用,没有任何问题,但在重建之后,我得到:

错误5自定义工具错误:无法为服务引用“MyService”生成代码。有关详细信息,请查看其他错误和警告消息

此标志枚举有什么问题

更新:


好的。。在战争中我发现了这一点,但这并没有真正帮助我:

警告1自定义工具警告:无法导入wsdl:portType 详细信息:运行WSDL导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageCompactImporter 错误:引用类型“TestSolution.Test.Entities.Documents.Document,TestSolution.Test.Entities,版本=1.1.78.7965,区域性=中性,PublicKeyToken=7ad0fddf5c57b9b3',命名空间中的数据协定名称为“文档”http://schemas.datacontract.org/2004/07/TestSolution.Test.Entities.Documents'无法使用,因为它与导入的DataContract不匹配。需要从引用的类型中排除此类型

XPath到错误源://wsdl:definitions[@targetNamespace='1]http://tempuri.org/']/wsdl:portType[@name='IDocumentService']c:\TFS1\TestSolution-Test\Test\Test.Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core 警告2自定义工具警告:无法导入wsdl:绑定 详细信息:导入wsdl:binding依赖的wsdl:portType时出错

到wsdl:portType://wsdl:definitions[@targetNamespace=”的XPathhttp://tempuri.org/']/wsdl:portType[@name='IDocumentService'] XPath到错误源://wsdl:definitions[@targetNamespace='1]http://tempuri.org/']/wsdl:binding[@name='NetTcpEndpoint']c:\TFS1\TestSolution-Test\Test\Test.Core\Service References\DocumentService\Reference.svcmap 1 Test.Core 警告3自定义工具警告:无法导入wsdl:端口

详细信息:导入wsdl:端口所依赖的wsdl:绑定时出错。 XPath到wsdl:binding://wsdl:definitions[@targetNamespace='1]http://tempuri.org/']/wsdl:binding[@name='NetTcpEndpoint'] XPath到错误源://wsdl:definitions[@targetNamespace='1]http://tempuri.org/']/wsdl:service[@name='DocumentService']/wsdl:port[@name='nettcendpoint']c:\TFS1\TestSolution-Test\Test\Test.Core\service References\DocumentService\Reference.svcmap 1 Test.Core
错误4自定义工具错误:无法为服务引用“DocumentService”生成代码。有关详细信息,请查看其他错误和警告消息。c:\TFS1\TestSolution-Test\Test\Test.Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core

添加
标志
属性时,更改了枚举的存储方式,并使该类型的变量能够容纳多个值。这解释了WCF如何处理此问题的详细信息。除非您真的打算将该枚举函数用作标志字段,否则我将去掉它,因为它不需要使枚举的含义复杂化。

仍然没有看到问题:(好的..在warrnings中我发现了这一点,但这并没有真正帮助我:我认为简单的解决方案是像以前一样删除
Flag
属性和Enum。通过添加它,您更改了Enum的数据类型,这会导致您的客户端发生中断。在这种情况下,引入一个新的
Enum DocStateFlags
,并更改您的服务器和客户端代码来使用新的枚举。没有简单的方法可以在不重新写入代码的情况下将当前枚举转换为
标志
类型。并且刚刚在项目中发现一个新警告:警告1自定义工具警告:已添加具有相同键的项。C:\Test\Service References\DocumentService\Reference.svcmap 1 1 Test.Co重新更新:为您提供一些附加信息:-我正在使用net.tcp绑定-枚举在wcf服务和客户端上已经使用了至少50个位置(不带flags属性)-当我创建一个同名但名称末尾有2的新枚举时,一切都很好!关于“wsdl:portType”的警告到底意味着什么/“wsdl:绑定”/“wsdl:端口”????
    /// <summary>
/// The DocumentState enum.
/// </summary>
[DataContract]
[Flags]
public enum DocumentState
{
    /// <summary>
    /// Undefined.
    /// </summary>
    [EnumMember]
    Undefined = 0,

    /// <summary>
    /// OK.
    /// </summary>
    [EnumMember]
    Ok = 1
}