WCF通用类型未重用
提示:这个问题有很多重复,但没有一个解决方案适合我 我拥有的是一个web服务和一个客户端,两者都有对共享程序集“DataModel”的引用。我正在使用“添加服务引用…”对话框创建服务代理,并选择“在所有引用的程序集中重用类型”,但它仍然会创建新类型,而不是重用我的类型WCF通用类型未重用,wcf,web-services,visual-studio-2010,service-reference,Wcf,Web Services,Visual Studio 2010,Service Reference,提示:这个问题有很多重复,但没有一个解决方案适合我 我拥有的是一个web服务和一个客户端,两者都有对共享程序集“DataModel”的引用。我正在使用“添加服务引用…”对话框创建服务代理,并选择“在所有引用的程序集中重用类型”,但它仍然会创建新类型,而不是重用我的类型 它过去可以工作,但现在突然不再重用类型了 在添加服务引用之前引用共享程序集不起作用 重新启动VS2010没有帮助(我有所有更新) 我尝试了一个简单的POCO类(只是一个包含整数属性的简单类),但也没有成功 删除并重新添加服务引用
- 它过去可以工作,但现在突然不再重用类型了
- 在添加服务引用之前引用共享程序集不起作用
- 重新启动VS2010没有帮助(我有所有更新)
- 我尝试了一个简单的POCO类(只是一个包含整数属性的简单类),但也没有成功
- 删除并重新添加服务引用(或共享程序集引用)没有帮助
- 仅在“在指定的引用程序集中重用类型”中选择共享程序集-不成功
产生相同的结果svcutil.exe/reference
编辑:我应该补充一点,我只是将我的项目重置为较早的提交,无论我使用哪个提交,仍然存在相同的问题。我知道它和以前的提交一起工作 这有点遥不可及,但有一种可能性是GAC中有一个旧版本的共享dll 它尝试使用共享dll,查找缺少类型的dll,然后恢复到创建类型 在添加服务引用之前引用共享程序集不起作用 您需要这样做,或者至少在添加引用后更新服务引用 删除并重新添加服务引用(或共享程序集引用)没有帮助 你不应该这么做,但我也会尝试的 为了使“重用”工作,两个项目(客户机和服务)都需要使用相同版本的程序集。您正在引用项目,这很好-我以前在直接引用程序集时遇到过这种情况,因为版本不同 这里有一些其他的东西可以尝试
- 打开解决方案的“配置管理器”-确保已将共享程序集配置为生成李>
- 确保您正在为客户端和服务使用项目引用-如果服务使用的是旧版本,则在客户端上使用最新的程序集不会有帮助李>
- 删除项目引用和构建,并期望构建失败-如果它没有失败,那么您必须引用其他内容
- 手动检查最新的“共享程序集”是否包含在服务和客户端的生成中-检查
文件夹,检查程序集版本/生成日期bin
与您服务中的名称相同。我花了整整一天的时间试图找出为什么在VS2013中添加服务引用时,共享dll中的类型没有被重用。事实证明,该服务存在几个与序列化相关的问题。我有几个枚举没有EnumMember属性。我解决问题的方法是尝试以下步骤:
我希望这能帮助其他正在经历这个令人沮丧的过程的人,这个问题不一定与共享dll有关。我的问题实际上不是使用添加或更新服务引用的问题。问题在于我的实体(模型)类没有使用适当的属性进行修饰,以通知DataContractSerializer序列化这些类型。似乎如果序列化的任何部分失败,添加服务引用会添加所有类型。这是一个老话题,但由于我今天遇到了相同的问题,我想分享我的修复方案 对我来说,问题是在两个项目(服务和客户机)中都正确添加了共享程序集,但都是在ser上添加的
SvcUtil.exe /t:code /language:cs /r:<path of the .dll that contains the types to reuse on client side> <wcf service url>
public class FooMetadata : Dictionary<Guid, FooMetadataType>
{
}