2010-09-28 52 views
3

我正在構建Silverlight應用程序。由於我有要被Silverlight和.NET模塊使用的類,我創建了一個包含所有類的Silverlight項目,然後創建一個將項目鏈接('添加鏈接')到Silverlight項目中的類的.NET項目。這樣,我有一個類文件作爲Silverlight和.NET程序集分別編譯。我想複製相同的Web服務引用。意思是說,我在Silverlight項目中有Web引用。我正在嘗試將Silverlight項目中的reference.cs添加到.NET項目中。當我編譯.NET項目時,ChannelBase類沒有得到解決,似乎是由於Silverlight和.NET框架庫中類的定義不一致。這會導致編譯錯誤,說明無法解析的ChannelBase。聽起來對我來說是一個死衚衕。你看到解決這個問題的方法嗎?從項目中添加指向Web引用的鏈接 - 未找到ChannelBase

+0

你有沒有找到答案? – 2011-08-31 21:55:49

+0

注意:如果你只是得到它來編譯(即單元測試,你永遠不會實際使用WCF服務),在你的程序集(ChannelBase 其中T:類)中創建一個非命名空間類,並添加構造函數和BeginInvoke/EndInvoke。我也不得不添加System.ServiceModel.Channels.IHttpCookieContainerManager – 2011-09-01 22:00:08

回答

1

恐怕這是不可能的。兩個代理都完全不同:其中一個是同步的,而另一個則不同步。

您可以做的最好的事情是共享服務定義的類,而不是整個代理。只需事先創建這些類,使用「添加爲鏈接」在兩個項目中重用它們,然後在添加服務引用時,標記選項「在引用的程序集中重用類型」。

+0

我想我現在會這樣做。謝謝! – 2011-09-07 00:22:56

1

以防萬一別人絆倒在這。我有類似的問題。我使用slsvcutil.exe生成代理並試圖編譯它爲.net和monotouch。我不斷得到ChannelBase not found。這根本沒有意義。最後,我在代理客戶端類中註釋掉CookieContainer屬性,並且注意到編譯錯誤消失了,並且該代理適用於單點觸摸。

相關問題