我有一个完美工作的Windows窗体C#.NET 4应用程序,它使用SQLite3数据库文件来存储数据和显示表单。
当我在除了dev机器之外的任何机器上部署我的应用程序时,我得到一个异常抛出,并且它的消息是“无法加载程序集System.Data.SQLite.dll或其依赖项之一。指定的模块不能是找到。”
项目中的System.Data.SQLite.dll引用设置为Copy Local = True。另外,我尝试使用Assembly.LoadFile手动加载程序集。 dll放在输出目录中。我也尝试将平台目标设置为任何CPU以及x86,没有区别。我正在使用的所有机器都是32位的。这是什么问题?为什么我的应用程序试图加载程序集而无法找到它?
谢谢!
答案 0 :(得分:13)
将程序发布到单独的计算机后,我遇到了同样的问题。在单独的计算机上安装Microsoft Visual C ++ 2010 Redistributable Package( x86 )修复了问题。
注意:单独的计算机已安装Microsoft Visual C ++ 2010 Redistributable Package( x64 ),需要 x86 版本。
答案 1 :(得分:7)
'System.Data.SQLite.dll“需要”msvcr100.dll“,这是它的依赖项之一。只有在安装了最新的”Microsoft Visual C ++ Redistributable“或内部提供此功能的任何其他产品时才可用。< / p>
例如,VS2010默认会安装C ++ Redistributable。这就是你的应用程序在某些机器上不起作用但在其他机器中起作用的原因。
您可以尝试粘贴应用程序bin文件夹中的“msvcr100.dll”并分发,如果您不想在所有PC中安装VC ++ 2010 Redist。
答案 2 :(得分:2)
某些System.Data.Sqlite.dll模块依赖于“Microsoft Visual C ++ 2012 Redistributable Package”。
您可以在官方下载页面上找到所需的依赖项:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
答案 3 :(得分:0)
已经给出的答案并没有解决我的问题。我尝试部署到VMware服务器。在这里给出了帮助的解决方案:http://sqlite.1065341.n5.nabble.com/System-Data-SQLite-Deployment-Mystery-td71752.html这里描述了两种方法。
我的主要问题是我手动安装了sqlite包。我没有使用NuGet,因为我支持代理。如果您使用Nuget,将自动提供app.exe.config中的信息。
在此处描述了在代理后面使用NuGet:NuGet Behind Proxy