2016-05-04 86 views
2

我在64位計算機上使用Windows 8.1上的Visual Studio Community 2015開發了一個小型C#WinForms應用程序,其目標是.Net Framework 4.5.2和Any CPU |更喜歡32位。 (我也嘗試瞄準只是x86)。如何使用ClickOnce發佈帶有SQLite的Winforms應用程序

我用NuGet Package Manager來安裝Entity Framework 6.3.1和System.Data.SQLite 1.0.101(它安裝了System.Data.SQLite,System.Data.SQLite.Core,System.Data.SQLite.EF6,和System.Data.SQLite.Linq),但System.Data.SQLite.Core不顯示在項目引用中。

該應用程序在VS調試器中運行正常,但ClickOnce發佈版本觸發無法加載SQLite.Interop.dll異常,當安裝並在同一臺計算機上運行。

我在解決方案資源管理器中看不到任何對SQLite.Interop.dll的引用。在項目的x86和x64 Debug文件夾中都有這樣的dll,但不在Release文件夾中。當我嘗試添加對x86或x64 dll的引用時,出現錯誤,指出它們無法添加(即無法訪問或無法使用有效的程序集或COM組件)。項目引用中的所有3個SQLite dll都有Copy Local = true。

我猜SQLite NuGet安裝無法設置一些項目屬性/引用,但我不知道這可能是什麼,爲什麼,以及如何解決它。我甚至不知道誰負責:SQLite,NuGet,Visual Studio,我?

感謝您的任何幫助。史蒂夫

+0

我有完全相同的問題。我會繼續補充說,我已經嘗試用我的clickonce解決方案安裝C++可重新發布的軟件包無濟於事。對於同樣的問題,從幾年前就有很多解決方案,但沒有什麼能夠真正解決我的問題 – MrNickel

回答

5

我只是找到了一個工作解決方案。閱讀概述https://github.com/oysteinkrog/SQLite.Net-PCL/issues/158#issuecomment-88163499 <註釋 - 有

重要的一塊:

我創造了x86和x64新的項目文件。我在一次部署的項目中創建了項目文件夾。即生成可執行文件的項目。我將bin文件夾中的interop文件複製到新的解決方案文件夾中

+0

感謝您的迴應。我試圖通過將SQLite.Interop.dll添加到引用中來將SQLite.Interop.dll添加到部署中,但在嘗試時(因爲它不是託管代碼)出現錯誤。 –

+1

爲了使它更清楚:創建文件夾後添加dll,使用「添加 - >現有項目」並選擇dll文件。 – muccix

0

只需在您的solition資源管理器中包含x86和x64文件夾即可。然後將Copy設置爲local = true。我將用sqlite.interop.dll創建文件夾。

+0

如何在文件夾中設置「複製到本地」? – Zolbayar

相關問題