WCF Service Reference 重用程序集引用问题

WCF Service Reference reuse assembly reference issue

我正在从我的客户引用 WCF 服务,并且数据协定位于同一解决方案中的程序集中。

当我添加服务引用时,它正确地重新使用了项目程序集,但它也添加了对同一程序集的额外引用,除了这个路径指向客户端项目 bin\Debug 输出文件夹。

问题是,当代码被推送到 git 时,它会破坏其他开发人员的构建,除非删除此无效引用。

我已经添加了项目引用并指示 svcutil 重新使用该引用,为什么它后来添加了自己的引用?每次我更新参考时也会发生这种情况。

有什么不对吗?或者这就是它的工作原理? "Reuse types in all referenced assemblies" 和 "Reuse types in specified reference assemblies".

我都试过了

经过几个小时的努力弄清楚发生了什么,我终于设法把一切都搞定了。

我认为发生这种情况的原因是因为我引用并想要 re-use 的程序集有错误 "Assembly Name" 属性.

我不认为这实际上会导致问题,但我注意到在添加项目引用时,它会显示为 "XYZ",但从程序集列表中选择它时会显示为 [=34] =] 在服务引用对话框中,它会显示为 "My.Namespace.XYZ",因此它有一个不同的名称。

我打开程序集的属性对话框, "Assembly name" 的值是 "My.Namespace.XYZ" 而不是 "XYZ",所以我改变了它,并留下了 "Default Namespace" 原样 (My.Namespace.XYZ).

然后我清理了解决方案,从客户端项目(bin、obj、服务引用、数据源等)中删除了所有多余的剩余文件和文件夹,并添加了服务引用,这次没有多余的引用已添加,一切都到了正确的地方。

更新:

我最近了解到,感谢我的同事,adding/updating 具有构建配置 x64 的服务引用不适用于重用程序集功能。我不得不切换到 AnyCPU,更新我的服务引用,然后切换回 x64。希望这可以帮助从 Google...

来到这里的任何人