【发布时间】:2013-11-20 09:21:47
【问题描述】:
我正在使用 Visual Studio 2010 中的 Add Service Reference 功能将 Navision Web 服务添加到一个简单的 Windows 窗体应用程序中,生成了引用,但在代码中存在阻止代码编译的重复定义,例如:
错误
命名空间“WindowsFormsApplication1.ServiceReference1”已经 包含一个定义 '状态' C:\Trash\WindowsFormsApplication1\WindowsFormsApplication1\Service 参考\ServiceReference1\Reference.cs
在Reference.cs里面我有
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1015")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:microsoft-dynamics-schemas/page/salesheaderpage")]
public enum Status {
/// <remarks/>
Open,
/// <remarks/>
Released,
/// <remarks/>
Pending_Approval,
/// <remarks/>
Pending_Prepayment,
}
和
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="Status", Namespace="urn:microsoft-dynamics-schemas/page/salesheaderpage")]
public enum Status : int {
[System.Runtime.Serialization.EnumMemberAttribute()]
Open = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
Released = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
Pending_Approval = 2,
[System.Runtime.Serialization.EnumMemberAttribute()]
Pending_Prepayment = 3,
}
我已经尝试取消选中Reuse types in referenced assemblies,但在这两种情况下仍然会生成重复的定义。
有什么想法吗?
编辑:页面是连接到标准表 36(销售表头)的自定义页面
【问题讨论】:
-
哪个版本的导航? 2009 年还是 2013 年?
-
版本为2009 R2
-
我相信需要更多信息。试图重现它,不能。我的 VS2010 仅生成该字段的第一个版本(名称为 Open、Release 等的版本)。您发布的页面可能有问题。我已经在第 42 页上对其进行了测试,该页基于与您相同的销售页眉。
-
@MakSim 非常感谢您的测试,表格是销售标题 (36),但页面是自定义页面(由于集成,无法使用标准页面),但是发布到 WEB 服务的其他页面的枚举也会发生此错误(表格 810)
-
这里有一个关于这个问题的大线程:social.msdn.microsoft.com/Forums/en-US/…。但要点是您的服务提供了格式错误的 wsdl,并且添加服务引用默默地从 DataContract 序列化回退到 XML 序列化,这会弄乱生成的类。使用带有
/serializer:DataContractSerializer选项的svcutil,它会告诉你你的wsdl 有什么问题。
标签: c# visual-studio-2010 wcf dynamics-nav navision