使用VS 2008在WCF中共享类型不起作用

时间:2008-11-13 01:32:19

标签: visual-studio-2008 wcf svcutil.exe

我正在尝试从客户端和WCF服务之间的数据层程序集中共享DTO。这可以使用svcutil,但在使用VS2008时不起作用。 VS2008生成它自己的DTO对象,而svcutil使用共享数据类型。

我使用的svcutil参数是:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SvcUtil" 
          /serializer:DataContractSerializer
          /language:vb 
          /out:ServiceClient.cs
          /namespace:*,CommonWCF 
          /noconfig
          /reference:"D:\trunk\DataLayer\bin\Debug\DataLayer.dll"
          /collectionType:System.Collections.Generic.List`1
          http://localhost:3371/Common.svc

我读到VS2008只是在幕后调用svcutil,为什么它不起作用?我真的想避免在构建过程中添加手动过程。

3 个答案:

答案 0 :(得分:4)

只需使用ClientFactory<T>

您实际上不需要svcutil或服务引用。他们生成的代码只是ClientFactory周围的膨胀包装器,几乎没有添加任何功能。

答案 1 :(得分:0)

如果您避免使用服务引用,并且只包含对svcutil生成代码的引用,那么这应该避免此问题。我们的DTO是共享组件。

答案 2 :(得分:0)

我创建了一个调用svcutil的批处理文件,并将其添加为预构建任务,以避免这是一个手动操作。这解决了我的问题,但我仍然不确定为什么svcutil和vs2008 gui方法之间存在不同的行为。