我正在尝试从客户端和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,为什么它不起作用?我真的想避免在构建过程中添加手动过程。
答案 0 :(得分:4)
只需使用ClientFactory<T>
。
您实际上不需要svcutil或服务引用。他们生成的代码只是ClientFactory周围的膨胀包装器,几乎没有添加任何功能。
答案 1 :(得分:0)
如果您避免使用服务引用,并且只包含对svcutil生成代码的引用,那么这应该避免此问题。我们的DTO是共享组件。
答案 2 :(得分:0)
我创建了一个调用svcutil的批处理文件,并将其添加为预构建任务,以避免这是一个手动操作。这解决了我的问题,但我仍然不确定为什么svcutil和vs2008 gui方法之间存在不同的行为。