0

我的解决方案包含以下项目

  • A(wcf 服务)
  • B (wcf 服务)
  • foo(参考文献 A)
  • 酒吧(参考 B)

如果我对 A 进行更改,我们必须更新 foo 中的服务引用。

我们现在必须这样做的方法是通过转到 Debug | 在 Visual Studio 中手动启动 A & B。启动 New Instance 以便 Cassini 启动服务(http://localhost:59445/A.svc),然后转到 foo 并更新服务引用。

我想找到一种方法(最好是命令行驱动)来自动更新 foo 和 bar 中的服务引用。必须有一种更好的方法来执行此操作,然后手动执行此操作。

建议?

编辑:我希望得到一些“你做错了!” 注释。我需要这样做的原因是因为我们偶尔会向服务添加新功能,从而更改合同。但更大的原因是我们正在使用 DVCS(mercurial),更糟糕的是,我们正在从一个在 VS2008 中运行的分支合并到另一个运行 VS2010 的分支中。每一次这样的合并都会破坏 VS2010 服务引用,而且更新服务引用要容易得多。我们现在必须手动完成。自动完成会好得多。

4

2 回答 2

4

如果可以,您应该完全取消您的服务参考。只需创建对服务合同 DLL 的二进制引用,然后在客户端上使用 ChannelFactory 动态创建通道(此处为示例)。

然后,如果您的服务合同发生更改,您只需更新此程序集引用。

于 2012-05-04T14:43:01.563 回答
2

您可以查看此博客文章(+第 2 部分)或此论坛帖子,甚至此 SO 帖子。它不是开箱即用的,因此根据您的情况配置所提供的解决方案可能有点复杂且耗时,但无论如何,这当然取决于您。

于 2012-05-04T13:29:42.707 回答