以下是在不起作用的计算机上运行应用程序时收到的错误:
System.ArgumentException:The 指定的商店提供商不能 在配置中找到,或者不是 有效。 ---> System.ArgumentException: 无法找到所请求的.Net 框架数据提供者。它可能不是 安装。
我们设法缩小了错误原因,我们相当肯定这就是它。在我的开发机器上,我安装了Visual Studio 2010。当我在安装结束时安装ADO.Net SQLite提供程序(http://sourceforge.net/projects/sqlite-dotnet2/)时,它会询问我安装Visual Studio的内容。我选择了Visual Studio 2010并且它可以工作。安装我创建的安装程序包让我使用该应用程序,一切正常。
在我的同事机器上,我们做了同样的过程。首先安装应用程序而不安装数据提供程序(上面链接),我们得到了错误。然后我们安装了数据提供程序,在安装向导结束时选择了Visual Studio 2010,现在安装的应用程序正常工作。
现在,在一个全新的Windows XP虚拟机上,我们尝试安装应用程序并运行应用程序,我们得到了同样的错误。然后我们安装数据提供程序,但它没有提示我们选择Visual Studio,因为它没有安装它,为什么客户需要它,对吧?我们尝试在安装后运行已安装的应用程序,并且我们收到SAME错误,就像驱动程序甚至没有安装一样。
有什么建议吗?我究竟需要客户拥有什么?似乎选择Visual Studio解决了这个问题,所以也许这个选项正在安装我们没有看到的东西?
答案 0 :(得分:20)
编辑你的exe的app.config以包含:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
答案 1 :(得分:3)
在Vanilla XP或Win7系统上,我需要进行上述配置文件修改,如Sqlite.NET帮助中所述,以便运行。
现在我已经添加了它,程序不再在我的开发盒(VS2010)上运行,除非我把它取出来。
BTW我在实体框架应用程序中使用SQLite.NET。
答案 2 :(得分:2)
尝试将System.Data.SQLite.dll放在.exe?
旁边