2014-09-23 69 views
0

我有一个WCF服务,用于正常工作。无论何时我添加新的服务合同或数据合同,我都可以在我的客户端项目中右键单击服务引用并选择更新服务引用,并且它会更新正常。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在溶液中窗体项目和复制的服务项目,以它为好。我在主项目中向服务添加了服务引用,并且它正常工作。这与以前一样在开发机器上。所以,我想问题是:我的原始项目有什么问题,我该如何解决?

+0

我会建议您首先检查在您刚创建的数据合同中是否正确定义了KnownTypeAttribute标记? – 2014-09-24 03:16:23

+0

是的,所有的数据合同都有KnownTypeAttribute。 – JoeMjr2 2014-09-24 03:20:54

+0

尝试在新鲜机器中添加您的服务参考。我的意思是任何其他机器与Visual Studio以前的配置相同。如果错误仍然存​​在,那么它可能是你的源代码的问题,否则它是完全环境相关的问题 – 2014-09-24 04:17:20

回答

2

好吧,我终于能够解决它。我只需要清理解决方案。右键单击解决方案资源管理器中最上面的解决方案节点,然后选择“清理解决方案”。之后,我在服务项目上进行了“重建全部”。最后,我在客户端应用程序中对服务引用做了“更新服务引用”,然后使用我的所有类型正确更新。仍然不知道发生了什么,但至少这清除了任何gremlins搞乱了事情。

+0

不幸的是,经过进一步测试,这似乎只是一个临时我只能正确地生成引用,如果我之前立即清理解决方案,如果我做了其他工作,然后再次生成它,它将返回到不再生成类型,这意味着每次我想重新生成服务参考,我必须首先清理解决方案,虽然这可行,但我真的想完全解决它。任何想法? – JoeMjr2 2014-09-25 16:56:40

+0

尝试手动清理(删除所有bin,obj文件夹),同时删除服务参考,然后重新启动机器然后再添加它:)(我不是在开玩笑,我不知道我或我的团队中的任何人做了什么,以使其消失)。 – Roman 2014-09-26 15:32:27

0

我遇到过类似的问题。

比方说,你的服务从命名空间My.Services定义类SomeDto。 如果引用您的服务的代码也引用My.Services中的SomeDto类,则某种程度上,Visual Studio不包括服务引用中的类型,例如, SomeDto在命名空间My.Code.ServiceReference中。

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

我希望它有帮助。