svcutil不导出通用DataContract类型的元数据

时间:2013-12-18 20:05:08

标签: .net visual-studio-2010 wcf datacontract svcutil.exe

到目前为止,我一直在实现WCF服务,让Visual Studio负责生成所有客户端代理代码。但是为了防止一些维护噩梦,我现在需要在客户端的不同服务之间共享DataContracts。所以我已经将我的服务的DataContracts移动到他们自己的程序集中,这样我就可以生成一个包含DataContract类的客户端程序集,如演示herehere

生成&在Visual Studio中生成代理时引用客户端DataContract程序集并指定重用类型,大多数DataContract代码都从生成的Reference.cs类中消失,除了遗留了几个类型:

public partial class OWSResultOfArrayOfguid ...

public partial class OWSResultOfOrderFulfillmentResult ...

这些是使用带有泛型类型的DataContract的一对服务方法的返回类型。这是它的声明:

[DataContract(Name = "OWSResultOf{0}")]
public class OWSResult<T>

在检查我使用svcutil生成的.xsd文件之后,任何类型的OWSResult似乎都没有包含在内。这是我用来生成文件的命令:

>svcutil /dconly "C:\...\bin\Debug\OWS.DataContracts.dll"

如果DataContracts.dll是程序集,我将所有DataContract定义移入。如果我只是没有看到.xsd文件中的定义,这里是我用来生成C#客户端代码的命令:

>svcutil /dconly /language:C# *.xsd /out:OWS.DataContract

s.cs / edb / s /ct:System.Collections.Generic.List`1 /r:C:\windows\Microsoft.NET\F ramework \ V2.0.50727 \ mscorlib.dll中

所以我在我的通用DataContract(OWSResult)中添加了一个KnownType属性,告诉工具这些类型的实现。 EG:

[KnownType(typeof(OWSResult<Guid>))][KnownType(typeof(OWSResult<OrderFulfillmentResult>))]

但它仍然不会生成这些类型。如何让svcutil包含这些?

0 个答案:

没有答案