部署Windows应用程序而不安装Sqlite .net提供程序
本文关键字:net 程序 Sqlite 安装 Windows 应用程序 不安 部署 | 更新日期: 2023-09-27 18:01:43
我使用SubSonic 3与SQLite 3的Windows应用程序。在编程应用程序时,为SQLite安装。net提供程序(System.Data.SQLite)对我来说是强制性的,我对部署应用程序的要求是,我只想创建一个可安装的,并跳过在客户端机器上为SQLite安装。net提供程序的部分。
我已经将System.Data.SQLite的引用添加到GAC中(在安装项目中),但这不起作用,因为在运行应用程序时它说
系统。无法找到请求的。net框架数据提供程序。
我相信有一个解决办法,它不应该是必要的安装。net框架提供程序的SQLite在客户端机器上。
-mmcmedic
除了将DB驱动程序.dll复制到您的应用程序中,您可能还需要注册DbProviderFactory。
通常安装程序也会在. net machine.config
文件中注册数据提供程序名称,以便ADO。. NET可以将提供程序名称字符串转换为实际的程序集名称。你可以直接将其添加到app.config文件中。我没有SQLite的例子,但我有这个在我的app.config MySql:
<configuration>
...
<system.data>
<DbProviderFactories>
<clear/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
</system.data>
...
</configuration>
您可以从您的机器中获得SQLite的正确配置元素。在已正确安装驱动程序的计算机上进行配置,请查看:
C: ' Windows ' Microsoft.NET ' Framework ' v2.0.50727 ' CONFIG ' machine.config
还要注意,我在上面的配置中包含了一个"clear"元素,因为如果DbProviderFactory已经被机器注册。配置时,它会抛出异常。所以我把它们全部清除,然后重新添加应用程序需要的那些。如果您确定这些机器不会安装DB驱动程序,则可以省略"clear"元素。
您只需要将System.Data.SQLite.dll
与应用程序一起部署即可。只要把它和你的可执行文件放在同一个文件夹里,. net就会自动找到它。您也可以尝试将其合并到您的可执行文件中。