2012-03-20 188 views
1

我有一点麻烦,从项目中我的WCF服务的参考,以反映项目B.变化WCF服务不更新(多项目,相同的解决方案)

都在我服务的参考和标准参考服务参考项目的DLL。

当对服务库进行更改时,这些更改似乎不会传播到我的客户端应用程序。这里有一个例子:

这是一个一流的,我只是一个新的“测试”构造更新,驻留在服务库的例子:

[DataContract] 
    public class TransactionUploadResult { 
     [DataMember] 
     public string Transaction_ID; 
     [DataMember] 
     public bool Error; 

     public TransactionUploadResult(string id, string temp, bool error) { 
      Transaction_ID = id; 
      Error = error; 
     } 

     public override string ToString() { 
      return "TID:" + Transaction_ID + ", " + (Error ? "ERROR" : "SUCCESS"); 
     } 
    } 

通知多余的第二个参数“临时”在构造函数中。

现在,这里是从我的客户端代码片段(在不同的项目,相同的解决方案):

private void button1_Click(object sender, EventArgs e) { 
      TransactionUploadResult tur = new TransactionUploadResult("test", true); 
      MessageBox.Show(tur.ToString()); 
      MessageBox.Show(RemoteHandler.ServiceClient.UploadTransaction(new Transaction()).ToString()); 
     } 

UploadTransaction()返回一个TransactionUploadResult。 MessageBoxes都显示用户定义对象的标准ToString()结果,而不是我在TransactionUploadResult中定义的结果。

客户端甚至编译并运行(考虑到它使用过时的构造函数)的事实令我感到惊讶。

怎么回事?提前致谢。

+0

只是要确定:您是否检查了ServiceReference配置设置“在所有引用的程序集中重用类型”? – 2012-03-20 10:04:57

+0

这是检查,是的,这是做什么? – Xenoprimate 2012-03-20 15:10:19

回答

0

我想你必须在客户端应用程序中右键单击服务引用并选择“更新服务引用”。

+0

啊,道歉,我应该提到,但我一直在这样做。 – Xenoprimate 2012-03-20 08:13:52

+0

我能想到的唯一其他解决方案是确保dll被构建(clean/build)并确保datacontract与实现它的类相匹配,通常datacontract只是与方法签名的接口,然后您有一个类实现该接口并在方法内部具有肉。 – John 2012-03-20 08:18:24

相关问题