WCF更新服务参考不再生成数据协定的类型

时间:2014-09-23 22:48:28

标签: c# wcf visual-studio-2012 visual-studio-2013 datacontract

我有一个过去工作正常的WCF服务。每当我添加新的服务合同或数据合同时,我只需右键单击我的客户端项目中的服务引用并选择更新服务引用,它就会更新。

在今天之前,我最后一次更新服务参考是在5个月前,当时它更新了。今天,我向服务项目添加了几个新的服务合同,并更新了客户端项目中的服务引用。发生的事情是服务生成正常,但类型(来自数据合同)没有。我的新服务参考根本没有任何类型。我所拥有的只是服务本身和调用服务合同的功能。

以下是我的服务参考在其正常工作时的样子: Here is what my service reference looked like when it was working correctly:

以下是现在的样子:

Here is what it looks like now:

在过去的5个月里,我一定意外地破坏了服务中的某些内容,我回到了我的源代码管理器,并在我上次成功更新服务引用的那天检查了旧版本的服务项目客户。我重建了服务项目,然后更新了我的服务引用,但它没有修复它。我还没有类型。

如果我返回并在客户端项目中检查旧版本的服务引用本身,那么我将返回类型。但是,这对我没有帮助,因为我需要添加新的服务合同并让它生成一个新的更新的工作服务合同。

我搜索了其他有同样问题的人,我发现有人说他们通过取消选中"在引用的程序集中重用类型来修复它"在服务配置中。我试过了,但它不仅没有带回我的类型,而且还删除了服务本身。

可能导致什么原因?

请注意,我已经从服务项目的旧版本开始工作,并且没有修复它,所以它不应该有任何关系我在服务合同或数据合同定义中的含义。它必须位于我的解决方案或Visual Studio配置中的其他位置。

最近发生的一件大事可能会对此有所启发。我最近开始与另一位开发人员合作,我们正在通过源代码控制共享解决方案。我正在使用Visual Studio 2012 Pro,他正在使用Visual Studio 2013 Ultimate。他的Visual Studio版本能否对我的版本中导致此问题的解决方案做了些什么?如果是这样,是什么?

更新

我在解决方案中创建了一个新的Windows窗体项目,并将服务项目复制到该项目中。我在主项目中向服务添加了一个服务引用,它正常工作。这与以前的开发机器相同。所以,我想问题是:我的原始项目可能出现什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:3)

好的,我终于能够解决它了。我所要做的就是清理解决方案。右键单击Solution Explorer中最顶层的解决方案节点,然后选择" Clean Solution"。在那之后,我做了一个" Rebuild All"在服务项目上。最后,我做了一个"更新服务参考"在我的客户端应用程序中的服务引用,然后它与我的所有类型正确更新。仍然不确定发生了什么,但至少这清除了无论什么小鬼搞砸了。

答案 1 :(得分:0)

我遇到过类似的问题。

假设您的服务从名称空间SomeDto定义了类My.Services。 如果引用您的服务的代码也引用SomeDto中的My.Services类,则Visual Studio不会包含服务引用中的类型,例如:名称空间SomeDto中的My.Code.ServiceReference

解决方案是删除对My.Services的代码引用,然后更新服务引用,最后重新添加对My.Services的引用。

我希望它有所帮助。