【发布时间】:2011-01-19 17:09:14
【问题描述】:
我在获取 VS2010 RC 中的服务引用以使用现有程序集时遇到了很大的问题。
即使我有一个在服务项目和消费项目(这是一个类库)之间共享的所有数据协定(用 DataContract 标记的类和用 DataMember 标记的属性)的类库,但当我添加服务引用时,使用服务引用而不是使用现有类型重新生成数据协定。
当我使用 VS2010 beta 2 时,它运行良好,并且我有使用相同数据合约的现有服务引用。但是如果我添加一个新的服务引用,甚至更新一个旧的引用,它就不会再使用现有的类型了。
我已经制作了一个小型测试解决方案,其中包含一项服务、一种数据合同类型和一个控制台应用程序作为消费者(都在同一个解决方案中),它似乎可以工作,但这对我来说并不是很舒服.有什么办法可以看出为什么它不能使用现有的类型?
编辑以清除。 它使用 svcutil.exe 生成代理类,并指向数据协定 dll,如下所示:
svcutil.exe http://localhost/MyService.svc
/reference:[Path To DataContracts]\DataContracts.dll
/n:*,MyProject.MyServiceReference /ct:System.Collections.Generic.List`1
问题是,即使选中了“重用”复选框并引用了数据合同程序集,Visual Studio 生成自己的数据合同而不是使用现有数据合同的可能原因是什么。
【问题讨论】:
-
我可以补充一点,我可以通过使用 svcutil.exe 手动生成服务引用并在 /reference 参数中指向我的数据合同 dll 来使用现有类型。但我仍然不明白为什么它在 Visual Studio 中不起作用!
-
如果它适用于您的简单案例,则继续复杂化,直到它失败,或者直到它与您的实际应用相匹配。
-
我是这么想的,但我的实际应用程序由 14 个项目、数百个类和数十个服务引用组成,大约有 30 个 datacontract-classes。所以“直到它与你的实际应用相匹配”需要一段时间。我希望其他人有这个问题,或者至少知道类型重用失败的原因。
标签: wcf web-services visual-studio-2010