簡體   English   中英

Win8 Javascript Metro App,帶有C#WinRT組件和SQLite

[英]Win8 Javascript Metro App, with C# WinRT Component and SQLite

我正在創建一個Windows 8商店應用程序。 這個應用程序的前端(主項目)是HTML5 / Javascript。 我正在按照Tim Heuer的指南創建一個包含SQLite調用並充當控制器的C#WinRT組件。 前端通過Javascript調用此組件,以更新數據並獲取演示文稿內容。

所以我的解決方案中有2個項目,javascript中的“main”和C#中的“db”。 我已經設法讓SQLite按照指南工作了。 我有這種結構的原因是我正在嘗試將應用程序從iOS移植到Win8。 “控制器”部分是一個獨立的組件,它已經移植到C#。

但是,有一點需要注意。 由於這個已知問題 ,我必須從'db'項目中刪除對C ++ Runtime v11的引用,以使其可編譯。 雖然它在開發機器上運行良好。

然后我得到了這台測試機(三星xe700t1a確切地說是Intel i5),我發現當在這台測試機器上“調試遠程”時,Visual Studio將不會部署SQLite3。 結果,我的SQLite調用失敗並出現錯誤: "Unable to load DLL 'sqlite3': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"

根據我之前提到的指南,SQLite通過WinRT擴展可用,是為了自動部署。

我想知道為什么會發生這種情況以及如何使其正確? 我也想知道這個結構中的應用程序是否存在針對Windows應用商店的任何認證問題?

我也遇到過這篇文章這篇文章暗示目前無法在WinRT組件中使用SQLite。 但現在改變現在為時已晚,如果沒有混合結構,這個項目將無法實現。

我找到了解決方案。 我使用了這篇文章的提示,而且非常簡單。

我要做的是在解決方案中創建另一個項目,輸出類型設置為C#類庫。 將引用移動到SQLite for WinRT,並將sqlite-net(nuget)包裝器移動到這個新項目。 之后,我必須手動瀏覽sqlite-net中的類,並將所有“內部”類更改為“public”。

對於原始控制器項目,我using myclasslib;添加using myclasslib; 以便找到類定義。

顯然,這種解決方法將完美無瑕地運作。 部署了SQLite3,並且沒有針對缺少引用的警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM