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

标签 c# visual-studio-2010 wcf dynamics-nav navision

我正在使用 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/

相关文章:

javascript - 如何从c#中的javascript对象获取值

c# - Entity Framework AutoDetectChangesEnabled = false 和 .Find

c# - ReliableSqlConnection 是否已弃用

asp.net-mvc - ReSharper 5.0 窒息位于同一项目中的强类型 View 模型

c# - 用于 Visual Studio 2010 的 Crystal 报表

visual-studio-2010 - 错误: A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine

c# - 将 int.Parse() 转换为 long 和使用 long.Parse 之间有区别吗?

c# - C# 中的数组搜索

c# - 用于 VB (COM) 客户端的 WCF 单一服务实例

c# - ELMAH - 没有 HttpContext 的异常记录