使用svcutil.exe生成与添加服务引用相同的命名空间

时间:2013-11-05 20:07:47

标签: wcf svcutil.exe

我有一个WCF服务,当我使用VS.NET 2012通过Add Service Reference...选项添加对它的引用时,我在对话框的底部指定一个命名空间(即`MyNameSpace')

这会在自动生成的Reference.cs类中生成以下前几行代码:

namespace MyProject.MyNameSpace {
    using System.Runtime.Serialization;
    using System;

//Lots of auto generated proxy class code...

}

问题是当我使用svcutil.exe实用程序手动生成代理类时,我没有获得该命名空间,并且在构建时遇到以下错误的 ton : / p>

  

类型或命名空间名称“MyNameSpace”不存在于   命名空间'MyProject'(您是否缺少程序集引用?)

所以我尝试了以下(2)的事情并且都没有效果:

  1. namespace MyProject.MyNameSpace {}实用程序中围绕生成的Reference.cs类手动添加简单的svcutil.exe声明。
  2. 使用/n中的svcutil.exe'命名空间'开关,其中包含以下内容:/n:http://schemas.datacontract.org/2004/07/MyNameSpace,MyNameSpace无效,并生成以下内容:

    使用System.Data;

    [assembly:System.Runtime.Serialization.ContractNamespaceAttribute(“http://schemas.datacontract.org/2004/07/MyNameSpace”,ClrNamespace =“MyNameSpace”)]

  3. 好的,这也没有用,并添加了排序的名称空间声明属性,但不像以前那样添加namespace包装器。

    如何在使用svcutil.exe生成代理类时这样做,将相同的namespace添加到生成的类中,因此当插回到我的项目中时,所有内容都按预期构建?

    编辑:使用以下命名空间切换,我得到了所需的命名空间,但我的方法中出现了重复的声明,这导致了另一个问题:

    命名空间:/n:*,MyProject.MyNameSpace
    现在代理中的问题示例:public bool MyMethod(MyProject.MyNameSpace.MyProject.MyNameSpace.MyRecord record)

    注意命名空间中的重复;这是一个问题。

0 个答案:

没有答案