2012-03-20 189 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

相關問題