gpt4 book ai didi

c# - 添加服务引用为枚举和方法创建重复的定义

转载 作者:可可西里 更新时间:2023-11-01 08:22:30 24 4
gpt4 key购买 nike

我正在使用 Visual Studio 2010 中的 Add Service Reference 功能将 Navision Web Services 添加到一个简单的 Windows Forms 应用程序中,生成了引用,但在代码中有重复的定义,这些定义阻止了代码编译,例如:

错误

The namespace 'WindowsFormsApplication1.ServiceReference1' already contains a definition for 'Status' C:\Trash\WindowsFormsApplication1\WindowsFormsApplication1\Service References\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(销售标题)的自定义页面

最佳答案

问题似乎是序列化发生了两次:

//Xml Serializer
[System.Xml.Serialization.XmlTypeAttribute(...

//DataContract Serializer
[System.Runtime.Serialization.DataContractAttribute(...

假设没有服务器端问题:

  • 首先要检查的是您在本地没有任何具有相同名称的枚举,因为它经常会破坏类型的重用。

  • 另外,使用 Add Web Reference 应该提供工作代码。

  • 如果其他点没有解决问题(或者它们对你没有用,即使它们产生了工作代码),我接下来会尝试使用 svcutil 手动构建通过特定序列化程序的代理类。由于 Dynamics 服务应该是 XML 服务,所以我会使用 /serializer:XmlSerializer(编辑:我输错了命令行参数!)

命令可能如下所示:

svcutil <ServiceURL> /Language:CS /target:Code 
/out:MyServiceProxy.cs /config:MyServiceProxy.config /serializer:XmlSerializer

根据 MSDN Reference for the tool (Framework ver 4.0),该工具的默认位置应为 %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin

关于c# - 添加服务引用为枚举和方法创建重复的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com