2010-09-30 60 views
1

如何查找爲桌面應用程序創建的DLL(在.Net中)是否可以在Silverlight應用程序中使用? 獎金問題:由於Silverlight for Windows Phone 7是Silverlight的子集,我如何確定該DLL是否可以在爲Windows Phone 7創建的應用程序中工作?如何查找在.Net中創建的dll是否可以在Silverlight中使用?

注意:由於WP7不支持P/Invoke - 這意味着任何使用P/Invoke的.dll都不適用於WP7 silverlight應用程序。我想知道是否有任何簡單的方法來確定(無需運行應用程序本身)。

原因是我需要一些圖像處理算法的實現,並想在他們購買之前弄清楚他們是否能在Windows Phone 7平臺上工作。

+0

跳過組件可移植性的技術問題,爲什麼不聯繫供應商並詢問他們是否測試了他們在電話上運行的代碼?即使該產品在那裏不起作用,您也可能會激勵供應商將其移植到手機上,這樣他們可以將更多的錢賣給您(以及這個新興市場中的許多其他開發人員)。 – Brian 2010-09-30 10:12:06

+0

如果我要在Reflector中查看.Net dll,而不是查看其引用的其他dll的列表,是否有任何元數據可以檢查它是否爲SilverLight框架構建(如果它是爲Windows Phone 7建造的)? – 2010-10-01 21:09:13

回答

3

簡而言之,它不會。兩個CLR運行時間完全不同,儘管它們具有相似的界面。

有三個注意事項,以這樣的:

(1)如果你的源代碼,而該代碼不依賴於任何Silverlight不支持,你可以嘗試交叉編譯它的Silverlight,通過引用Silverlight項目中的源文件。有時你可以通過微調來調整它,或者明智地使用#if定義。有時你不能。 (2)在Silverlight 4/.NET 4中,您有時可以重新使用爲.NET中的Silverlight編譯的程序集。 CLR團隊的博客文章爲explaining how it works。然而,這是一個相當有限的解決方案,因爲(a)首先必須爲Silverlight編譯程序集,並且(b)這些可移植程序集只能調用一小部分本身便攜的其他程序集,例如Mscorlib,System, System.Core等等。 (我應該注意,這不適用於你,因爲你的WP7是基於Silverlight 3的。)

(3)你可以偶爾使用DLL內部並將編譯後的DLL轉換爲相信它是一個Silverlight DLL。有一篇關於如何去做的博客文章here。但是,這又是一個非常有限的解決方案,因爲程序集無法調用Silverlight中未包含的任何方法或程序集。這包括一些非常基本的東西,比如Buffer.BlockCopy()的一些重寫,就是這樣。如果這種技術適用於一個複雜的商業圖像處理DLL,我會感到驚訝,但發生了一些奇怪的事情。

相關問題