我有一个 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)件事,但都没有奏效:
- 在实用程序生成的类
namespace MyProject.MyNameSpace {}
周围手动添加一个简单的声明。Reference.cs
svcutil.exe
使用带有以下内容的
/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)
注意命名空间中的重复;这是个问题。