所以我有一个我继承的项目,它有一个 WCF 服务引用和相应的Reference.cs
生成代理类。在现有的代理类中,我可以看到一个enum
定义:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyRecord.ColorAction", Namespace="http://schemas.datacontract.org/2004/07/DocumentsDataAccess.DataClasses")]
public enum ColorAction : int {
[System.Runtime.Serialization.EnumMemberAttribute()]
NONE = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
GREEN = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
RED = 2,
}
下面是对应的 WCF 代码:
[DataContract]
public enum ColorAction
{
[EnumMember]
NONE = 0,
[EnumMember]
GREEN = 1,
[EnumMember]
RED = 2,
}
我可以通过在浏览器中查看来验证这是否已公开,wsdl
并且我可以看到enum
列出的类型。
但是,当我“刷新”或“添加服务参考”(通过删除和重新添加作为新参考)时,这enum
以及许多其他方法和枚举都丢失了。代理类的下载和创建是成功的,所以这不是错误问题。
我已尝试调整Add Service Reference
对话框中的所有“高级”设置,但似乎没有什么区别。最终结果是,由于现有代码期望能够调用和使用enums
缺少的其他代码,因此在刷新或重新添加服务引用后代码将无法编译。
我已经尝试取消选中Reuse types in all referenced assemblies
,但这并没有改变结果。
我想知道,创建我正在查看的代理类的原始人是否没有使用Add Service Reference
向导并直接SvcUtil.exe
转而使用?我自己之前使用过它,但想知道我需要使用什么来生成WCF 服务公开的所有内容?我需要哪些开关才能获得该服务必须公开提供的所有内容?(仅供参考,我的目标是 .NET 4.0)。