2011-06-03 71 views
3

我有一個WPF應用程序和一個Silverlight應用程序。它們都用於顯示地圖並共享一些相同的功能。從WPF應用程序引用Silverlight類庫時的錯誤

我創建了一個Silverlight類庫項目以保持DRY。我從Silverlight和WPF中引用了這個。它包含一些在兩個項目中都有用的實用方法。例如,我有這種方法:

public static void CenterText(TextBlock name, Polygon poly) 

silverlight項目對此沒有問題。但是,從我的WPF應用程序調用此函數時出現以下錯誤:

在未引用的程序集中定義了類型「System.Windows.Shapes.Polygon」。您必須添加到程序集的引用「System.Windows,版本= 2.0.5.0,文化=中性公鑰= 7cec85d7bea7798e」

不過,我有這條線在文件的頂部:

using System.Windows.Shapes; 

所以WPF可以很好地看到Polygon類。 我的猜測是Silverlight類庫使用的框架版本與WPF項目使用的版本不兼容。

所以問題是,我堅持改寫完全相同的代碼在我的WPF應用程序或有一些方法可以在兩者之間分享?

謝謝!

回答

4

你說得對,Silverlight使用了一個完全獨立的框架版本。它比事件.NET客戶端運行時要小得多。

這意味着您不能在同一個應用程序中混合使用WPF和Silverlight程序集。

2

在Silverlight中,該類在System.Windows.dll中,而在WPF中則在PresentationFramework.dll中,該庫試圖獲取WPF應用程序中默認未引用的Silverlight程序集。

+0

這很有道理。而且它似乎沒有System.Windows程序集可以在.NET4中引用。 – Erix 2011-06-03 21:19:27

+0

那麼,如果你從相應的文件夾中獲得dll,那麼你可以引用它,問題是這不起作用,因爲這兩個程序集都包含具有相同名稱空間的類型,所以會有衝突。 – 2011-06-03 21:49:18

3

我遇到了這個錯誤,因爲我已經爲Silverlight下載了Expression Blend SDK,而不是我應該下載的東西:Microsoft .NET Expression 4的Blend軟件開發工具包(SDK)。它可以在MSFT的網站上找到, :

http://www.microsoft.com/en-us/download/details.aspx?id=10801

當我下載了.NET中的Expression Blend SDK,刪除了所有混合SDK爲Silverlight引用,並添加這些作爲混合相同的參考對於.NET,我是啓動和運行。

+0

+1的鏈接和有關不同包的信息。我搜索了System.Windows.Interactivity的DLL,並指向SL包,當我不真的需要那個。 – StingyJack 2014-03-20 16:32:33

相關問題