5

我有一个 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实用程序手动生成代理类时,我没有得到该命名空间,并且在构建时出现大量以下错误:

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

所以我尝试了以下(2)件事,但都没有奏效:

  1. 在实用程序生成的类namespace MyProject.MyNameSpace {}周围手动添加一个简单的声明。Reference.cssvcutil.exe
  2. 使用带有以下内容的/n“命名空间”开关svcutil.exe/n:http://schemas.datacontract.org/2004/07/MyNameSpace,MyNameSpace它不起作用并产生以下内容:

    使用 System.Data;

    [程序集:System.Runtime.Serialization.ContractNamespaceAttribute(" http://schemas.datacontract.org/2004/07/MyNameSpace ", ClrNamespace="MyNameSpace")]

好的,这也不起作用,并添加了一个命名空间声明属性,但不是namespace像以前那样的包装器。

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

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

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

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

4

0 回答 0