2016-05-04 56 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

相关问题