2010-09-22 100 views
3

我有一個簡單的Silverlight應用程序,我想在Windows Phone 7上運行,幾乎完全一樣。我創建了一個新的Windows Phone 7項目,當我參考Silverlight應用程序時,我收到一條警告:「添加對Silverlight項目的引用可能無法正常工作,您想繼續嗎?」。是否有可能在Silverlight Web應用程序和Windows Phone 7應用程序之間共享代碼

如果我仍然繼續並嘗試運行,WP7項目永遠不會啓動,有時我會得到「AG_E_PARSER_BAD_TYPE錯誤」,它指向xaml中的行,我使用了Silverlight項目中的控件。

這兩個項目之間的代碼約99%相同。有沒有其他的方式來重用代碼,然後我正在嘗試?或者我怎樣才能使這個工作?

回答

1

實現此目的的典型方法是使用像MVVM這樣的模式,它允許您定義通用模型和視圖模型層(可能在單獨的項目中)定義引用該通用項目的不同視圖層。你只會分享大部分代碼,而不是全部,所以你至少在某個時候需要創建設備/前端特定的邏輯和佈局。

+0

這並不能避免這個問題,因爲通用項目要麼必須是Silverlight項目(不適用於wp7)或wp7項目(並且不適用於Silverlight)。 – liserdarts 2010-09-22 20:34:48

+0

雖然你仍然可以這樣做,但Silverlight for WP7基於SL3,所以除非在公共庫中有特定於桌面的代碼,否則你的所有好的 – Mark 2010-09-23 11:29:37

+1

請參見:http://social.msdn.microsoft.com/Forums/en -US/windowsphone7series /線程/ 79858a29-4db0-460d-9a75-3630211a28fb/ – Mark 2010-09-23 11:30:25

4

我對這兩個平臺之間的區別並不熟悉,但是您可以將代碼文件鏈接到不同的項目而不重複它們。添加現有項目,然後點擊「添加」或「確定」按鈕旁邊的向下箭頭。選擇鏈接。

+2

或者,您可以使用Pattern&Practices ProjectLinker鏈接兩個項目:http://msdn.microsoft.com/en-us/library/ff921108%28PandP.20%29.aspx – 2010-09-22 10:13:13

+0

+1 - cool,didn不知道那 – stombeur 2010-09-22 11:53:04

+0

這並沒有發生在我身上,但我想它可以工作。但是我必須對每個依賴項都這樣做,而且我沒有所有這些源代碼。 – liserdarts 2010-09-23 01:58:50

1

與其向您的WP7應用添加Silverlight [大概是類庫]項目,請嘗試創建WP7類庫,然後鏈接Silverlight庫中的文件。您仍然只有每個文件的一個副本,但是您的所有庫都將爲其所運行的平臺生成相應的應用程序。

這也可以幫助您找出問題的原因。錯誤AG_E_PARSER_BAD_TYPE建議您在Silverlight項目中的XAML中有一個類型,該類型在手機上不受支持。

相關問題