WCF服务引用不会重复使用现有程序集中的类型(VS 2010 Beta 2)

11
我正在寻找在WCF服务和客户端之间分享类型(实际的类,而不是代理)的最佳方法。为此,我将类定义在一个单独的程序集中,服务和客户端都引用该程序集。在生成客户端的服务引用时,我选择了“重用所有引用程序集中的类型”,但是References.cs会为所有类生成代理。
这与这个问题完全相同,但我不知道如何实现已接受的解决方案。一个区别是我使用的是VS 2010 Beta 2。
引入完整的服务契约代码或创建自己的ClientBase派生类是最好的方法。这真的很容易。
假设这是最好的方法,我希望有一个很好的链接介绍如何实现这一点。链接答案中概述的方法是否是最佳方法?
3个回答

16

我在同一个步骤中做了两件事情。不确定哪一项或哪两项解决了问题:

  1. 给共享程序集中的一个类添加了[DataContract(Namespace="My.Shared.Assemblys.Namespace")]。
  2. 重新启动了VS 2010 Beta 2。

4
今天我用VS2012 Update 1遇到了完全相同的问题。在多次更改“数据协定(DataContracts)”后,首先一个类型,然后所有类型都不再被重用。重新启动VS有帮助... - Desty
3
VS 2012- 我只需简单地重启,问题就解决了。 - Lee O.
同于VS 2010专业版。 - xr280xr
对我来说,这意味着在VS2013中打开我的VS2010项目,然后“更新服务引用”。 - Mark Cooper
突然间我在重用方面遇到了问题,而其他使用相同类型的服务却没有问题。 显式命名空间很有帮助 - 谢谢! - Thomas Hagström

3

我曾经遇到了同样的问题,但是我忘记为客户端构建包含DataContracts的程序集,因此它会生成自己的合同。一旦我重新构建了程序集 - 它就重用了它们。


重建所引用的程序集并执行“更新服务引用”操作解决了问题! - Marcin Zablocki

1
我的问题是在 VS2010 SP1 中尝试使用从 Dictionary<T,U> 派生的类并带有 CollectionDataContract 属性。看起来 VS 不会重用该类型... 我也尝试了 Eric 上面的建议,但没有成功。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接