如何从使用它的应用程序更新System.Data.SQLite.DLL?

时间:2011-08-11 18:06:20

标签: c# .net sqlite

我有一个.NET应用程序,它只是另一个应用程序的更新程序。但是,Updater使用SQLite查询数据库以查找代理设置以从服务器下载更新。我需要更新SQLite DLL,但当然我得到“进程无法访问文件'C:\ Program Files \ XXXX \ System.Data.SQLite.dll',因为它正被另一个进程使用。”

我在Wikipedia上看到“SQLite不是一个可以从客户端应用程序访问的独立进程,而是它的一个组成部分。”但情况似乎并非如此。

有人能想到一个解决方法吗?

2 个答案:

答案 0 :(得分:0)

如果需要更新应用程序使用的库,则应使用后期绑定来加载库,以便可以根据需要对其进行解除分配,然后覆盖该文件。您现在可能是早期绑定它,这将阻止您的进程运行时的任何覆盖。

答案 1 :(得分:0)

假设您有一个运行更新程序应用程序的“主”应用程序 - 从主应用程序中获取代理设置,然后将其传递到命令行上的更新程序应用程序。

另一个选项 - 如果您的更新程序应用程序位于C:\ Program Files \ XXXX \ Updater \中,您可以在主文件夹中更新SQLite DLL的副本,而不会遇到冲突。但这并不理想 - 您最终得到了2个DLL副本,而您的主应用程序可能希望更新Updater文件夹中的SQLite DLL。

另一个选项 - 将代理配置设置移动到SQLite数据库以外的其他设置。 XML设置文件可以很好地用于类似的东西,并且序列化/反序列化它的库是内置于.NET。