【问题标题】:How to update WCF reference?如何更新 WCF 参考?
【发布时间】:2015-08-06 20:57:01
【问题描述】:

在 Visual Studio (2013) 中,有没有办法更新 WCF 引用而不会将其炸毁?

如果我更新引用以引入新类型,它会将一些返回类型更改为非泛型。如果我然后配置服务并选择使用泛型,它会完全改变一些签名方法,这会破坏服务。我必须删除服务参考文件夹中所有生成的文件,并从存储库中获取原始文件才能再次工作。

该服务在 WCF 测试客户端中运行良好。我可以在结果中看到新类型。我只是无法在现有项目中更新它。

【问题讨论】:

    标签: .net visual-studio wcf


    【解决方案1】:

    ...有没有办法更新 WCF 引用而不破坏它?

    不是真的。当您更新服务引用时,最终结果虽然最终具有确定性,但肯定是不可预测的。

    为避免这种情况,请完全不要使用服务引用。只需创建对服务协定的二进制引用并使用 WCF 通道堆栈调用服务,如 here 所述。

    只有在您有权访问服务二进制文件时才能执行此操作。

    如果您不想引用合同,则服务引用会占有一席之地 程序集(可能是因为它不存在)

    我同意服务引用有其位置:该位置在公共网络上,或者,正如您所指出的,任何其他不可能获取服务程序集的情况。

    如果您有权访问服务程序集,我真的很难想到使用服务引用而不是二进制引用更可取的情况。

    我想一个原因可能是定义服务和操作/数据合同的类型与一堆其他东西捆绑在一个超级程序集中,但在这种情况下,最好的办法是将它们提取到一个单独的程序集并让服务和消费者都引用它(最好是通过 NuGet)。

    【讨论】:

    • 你不觉得这个建议有点太规范了吗?如果您不想引用合同程序集(可能是因为它不存在),则服务引用会占有一席之地。
    • @usr 我已经回复了编辑答案。我想我来自的地方是一个在设计和使用公共服务方面几乎没有经验的人,所以我总是以可以通过二进制引用来使用它们的方式设计我的服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多