2013-01-01 89 views
0

嘗試將BouncyCastle c#dll添加到我的WP8本機應用程序。winmd缺少實現

  • 我創建一個Windows運行時組件的Windows Phone 8的
  • 我在組成經現有的C#DLL和創建MyBouncyCastleComponent.winmd
  • 我打開我的WP8本地的項目,我添加winmd作爲參考

結果: 在編譯時「警告:不執行文件是爲.winmd文件中提供」

在運行時崩潰,當我停止我得到模擬器「WinRT的信息:未註冊類」(它長得比,抱怨缺少PDB文件的窗口文件,如Windows.winmd和系統。 Windows.RuntimeHost.ni.dll)

我用ILDASM打開了winmd。 解密和加密的實現在那裏?我究竟做錯了什麼?

MyBouncyCastleComponent.winmd opened with ildasm

我知道它被要求No implementation file was provicded for the .winmd file,但沒有答案。我又嘗試...(無法弄清楚如何將其添加爲一個問題存在)

編輯:

只是澄清。當我說:「我在組成經現有的C#DLL和創造MyBouncyCastleComponent.winmd
我所做的就是採取BouncyCastle的源代碼把它在運行時組件與包裝類暴露BouncyCastle的方法我需要。

+1

不,.winmd文件只包含*聲明*,不包含實現。這是一個打包問題,因爲WinRT需要知道代碼實際上是以需要加載CLR的語言實現的。這需要包含「」元素的*清單*。該軟件包需要包含程序集。在手機上的CLR是否支持這一點是一個遠射。 –

回答

0

它看起來非常像你在試圖讓一個C#DLL編譯爲完整的.NET框架來在Windows Phone上工作。 Windows Phone使用不同的.NET配置文件,與完整的.NET框架不是二進制兼容的,所以這是行不通的。

對於BouncyCastle,您需要引用專門爲Windows Phone構建的二進制DLL - 例如,通過從BouncyCastle源代碼構建自己的二進制DLL。

更新: 由於您使用的是BouncyCastle的子集,因此您可以將您需要的源代碼放入可移植類庫項目中,以便它可以直接在Windows Phone和Windows應用商店應用中使用。

+0

我想我是按照你說的去做的。我用c#windows store/windows運行時組件模板。添加了所有BouncyCastle c#源文件並創建了.winmd我已閱讀每一篇文章,我都能找到,而且我完全陷入困境。任何幫助是極大的讚賞。 –

+0

您應該使用普通的.NET類庫,Windows Phone不支持.NET WinRT組件,僅支持C++。 –

+0

感謝您的支持!我意識到我一定錯過了一些非常微不足道的東西。 WP8可以在C++中使用winRT組件,但不是相反的方向,就像我需要的那樣。對於所有關於本地和管理無縫地共同工作的hoo haa來說非常重要。令人失望。 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714080%28v=vs.105%29.aspx –