部署C#SQLite应用程序

时间:2014-09-24 12:58:31

标签: c# sqlite

我有使用SQLite的C#应用​​程序。它已经有效了,但我一直在玩它,它不再有效,我不知道出了什么问题: - /

它编译好但我有问题“无法加载'System.Data.SQLite.dll'或其中一个依赖项(在非开发机器上)。这是一个在安装过程中启动的服务,因此安装因此错误而失败

所以我添加了System.data.sqlite引用。我必须注意解决方案资源管理器中不再有“x86”和“x64”: - /

包管理器控制台显示已安装:

PM> Install-Package System.Data.Sqlite
Attempting to resolve dependency 'System.Data.SQLite.Core (≥ 1.0.94.0)'.
Attempting to resolve dependency 'System.Data.SQLite.Linq (≥ 1.0.94.1)'.
Attempting to resolve dependency 'System.Data.SQLite.EF6 (≥ 1.0.94.0)'.
Attempting to resolve dependency 'EntityFramework (≥ 6.1.1.0)'.
'System.Data.SQLite 1.0.94.1' already installed.
QLog already has a reference to 'System.Data.SQLite 1.0.94.1'.

PM> 

我把它添加到WXS:

(...)
<Component Id="System.Data.SQLite.dll" Guid="{BCA7E1B7-CA34-4B1C-829F-29D4F135912E}">
    <File Id="System.Data.SQLite.dll" Source="..\QLog\bin\x86\Release\System.Data.SQLite.dll" Vital="yes" KeyPath="yes" DiskId="1"/>
</Component>


<Directory Id='dir_x86' Name='x86'>
    <Component Id='x86' Guid='{C2869DAC-B3CC-4E87-AEF2-74F76025CFD9}'>
    <CreateFolder />
        <File Id='x86' Name='SQLite.Interop.dll' Source='..\QLog\packages\System.Data.SQLite.Core.1.0.94.0\build\net45\x86\SQLite.Interop.dll' />
    </Component>
</Directory>
<Directory Id='dir_x64' Name='x64'>
    <Component Id='x64' Guid='{452F3E46-B1E6-4A5A-B2CB-C7DA9B7EAB51}'>
    <CreateFolder />
    <File Id='x64' Name='SQLite.Interop.dll' Source='..\QLog\packages\System.Data.SQLite.Core.1.0.94.0\build\net45\x64\SQLite.Interop.dll' />
    </Component>
</Directory>
(...)

解决方案资源管理器中没有“x64”和“x86”文件夹,因为它们在教程中,但我可以在“参考”下看到system.data.sqlite(图像信誉不足)。

我甚至尝试将sqlite-netfx45安装到部署机器上,但它也无济于事。

有什么想法吗? : - /

2 个答案:

答案 0 :(得分:1)

  

我必须注意,没有&#34; x86&#34;和&#34; x64&#34;在解决方案资源管理器中: - /

应用程序部署,如下所示:

  • \ App.exe(可选,仅限托管应用程序可执行程序集)
  • \ App.dll(可选,仅限托管应用程序库程序集)
  • \ System.Data.SQLite.dll(必需的,仅管理的核心程序集)
  • \ System.Data.SQLite.Linq.dll(可选,仅限托管的LINQ程序集)
  • \ System.Data.SQLite.EF6.dll(可选,仅限托管的EF6程序集)
  • \ x86 \ SQLite.Interop.dll(必需,x86原生互操作程序集)
  • \ x64 \ SQLite.Interop.dll(必需,x64原生互操作程序集)

答案 1 :(得分:0)

我发现了问题。新版本不需要在构建项目时指定x86目标。只需选择AnyCPU。